正在传递类型引用<;T>;在java中使用泛型时,手动操作是一种很好的做法

正在传递类型引用<;T>;在java中使用泛型时,手动操作是一种很好的做法,java,jackson,type-conversion,json-deserialization,objectmapper,Java,Jackson,Type Conversion,Json Deserialization,Objectmapper,我有一个方法,它使用泛型,如下所示 public <T> ReturnThis<T> doSomething(Request req) { . . T result = ObjectMapperFactory.getMapper().readValue(req, new TypeReference<T>() {}); . . return ReturnThis<T&g

我有一个方法,它使用泛型,如下所示

  public <T> ReturnThis<T> doSomething(Request req) {
        .
        .
     T result = ObjectMapperFactory.getMapper().readValue(req, new TypeReference<T>() {});
        .
        .
     return ReturnThis<T>;
  }
public返回此剂量计(请求请求){
.
.
T result=ObjectMapperFactory.getMapper().readValue(req,新类型引用(){});
.
.
归还这个;
}
我知道有@JsonSubTypes可以用来显式地让Jackson知道类型。但这不是我在这里的用例

或者,也可以这样做

 public <T> ReturnThis<T> doSomething(Request req, TypeReference<T> type) {
       .
       .
    T result = ObjectMapperFactory.getMapper().readValue(req, type);
       .
       .
    return ReturnThis<T>;
 }
public返回此doSomething(请求请求,类型参考类型){
.
.
T result=ObjectMapperFactory.getMapper().readValue(req,类型);
.
.
归还这个;
}

下面的一个是首选的还是更安全的?

这取决于具体情况。你希望它是通用的吗?使用第二种方法。尽管如此,第一个方法对我来说毫无意义,因为您没有在签名中的任何地方指定泛型类型。@AniketSahrawat泛型类型的指定方式与方法二相同。@Tom这是多余的。它没有被使用。@chaitra.kear正如我已经提到的,它取决于需要。@Tom我找不到任何理由指定
t
。我可以使用
public ReturnThis
,因为我已经知道了类型。我打赌某些IDE会对方法1发出警告。我希望你现在明白了,这要看情况而定。你希望它是通用的吗?使用第二种方法。尽管如此,第一个方法对我来说毫无意义,因为您没有在签名中的任何地方指定泛型类型。@AniketSahrawat泛型类型的指定方式与方法二相同。@Tom这是多余的。它没有被使用。@chaitra.kear正如我已经提到的,它取决于需要。@Tom我找不到任何理由指定
t
。我可以使用
public ReturnThis
,因为我已经知道了类型。我打赌某些IDE会对方法1发出警告。我希望你现在明白了。