小编Mr *_*rly的帖子

返回通用 Result<Foo<Bar>>

我有一个泛型类,其中包含 T 类型的结果或错误消息。它有两种方便的创建方法:

public class Result<T> {

    private String errorMessage;
    private T result;

    ...

    public static <S> Result<S> ok(S body) {
        return new ServiceResult<S>(body);
    }

    public static <S> Result<S> error(String errorMessage, Class<S> clazz) {
        return new ServiceResult<S>(errorMessage);
    }

}
Run Code Online (Sandbox Code Playgroud)

使用给定的方法,我能够创建大多数类型的类型保存结果。我现在面临的问题是我无法创建本身是通用类型的错误服务结果。非常欢迎任何帮助!

为了进一步说明问题,假设我想返回类型为 的结果List<String>。如果结果创建成功,我可以使用以下ok()方法创建我的结果:

List<String> myStringList = ...;
Result<List<String>> result = Result.ok(myStringList);
Run Code Online (Sandbox Code Playgroud)

另一方面,如果发生错误并且我想返回相同类型的错误结果,则提供的方法将不起作用,因为无法创建Class<List<String>>

// error, List<String>.class does not compile
Result<List<String>> result = Result.error("Error message", List<String>.class);
// error, result is of type Result<List>
Result<List<String>> result = Result.error("Error …
Run Code Online (Sandbox Code Playgroud)

java generics

3
推荐指数
1
解决办法
73
查看次数

标签 统计

generics ×1

java ×1