当前位置: 首页 > 知识库问答 >
问题:

如何在泛型构造函数中传递参数类名

韦衡
2023-03-14
public class RestResponseDTO<T extends Object> {
    private  T result;
}

我正在初始化的代码:

public RestResponseDTO getObject(String url,Class clz){
    Class cv = clz.getClass();
    RestResponseDTO<cv> restResponseDTO =restTemplate.getForObject(url,RestResponseDTO.class);
    return restResponseDTO;
}

如何根据 clz 类型在我的 get 对象函数中启动 RestResponseDTO

ps-getForObject是spring restTemplate的标准函数-http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html#getForObject-java.lang.String-java.lang-Class-java.lang.Object-

共有3个答案

拓拔君博
2023-03-14

不能将具有泛型参数的类传递给具有parametertype 类的方法

一种方法(我知道的唯一方法)是:创建包含泛型参数的具体类型。

class IntegerResponse extends RestResponse<Integer>{
    ...
}

这样,您就可以传递< code > integer response . class

林华皓
2023-03-14

请尝试:

=restTemplate.getForObject(url,RestResponseDTO.class);

和响应实体()将为您提供对象T。

盖辉
2023-03-14

您可以添加如下方法:

void init(Class clazz) {
     //you initializing logic
}

称之为

RestResponseDTO<cv> restResponseDTO =restTemplate.getForObject(url,RestResponseDTO.class);
restResponseDTO.init(clz);
return restResponseDTO;

PS:您的cv变量将始终具有相同的值。

 类似资料:
  • 问题内容: 我想创建一个KeyValue类,但以通用方式,这就是我写的内容: 错误显示:“令牌“>上的语法错误”,此令牌后应有标识符” 那我该如何在Java中创建一个通用构造函数呢? 问题答案: 您需要从构造函数的签名中删除:它已经隐式存在。

  • 我正在尝试使用杰克逊对物体进行去耳廓化 我有一个例外: 我知道这是因为这是我的构造函数: 所以,我的构造函数收到 HttpResponse 参数,我没有传递它,但我不知道该怎么做。我不能用空构造函数过度收费,因为我需要它以这种方式接收 HttpResponse 对象。当我调用 readValue() 方法时,有什么方法可以传递这个构造函数参数吗?或者在这种情况下最好的选择是什么?我感谢您的帮助。问

  • 我正在尝试通过:如果流文件; 在我的主()中,到一个名为“FIFO”的类的构造函数:FIFO(文件); 在FIFO(FIFO.h)的头文件中,我有: 在FIFO.cc,我有: 我一直喜欢(还有更多,我只是粘贴其中一个): 在文件包括从/usr/lib/gcc/x86_64-redhat linux/4.4.7/…/…/…/…/包含/c /4.4.7/bits/localefwd.h: 43,从/u

  • 问题内容: 如果我有一个像这样的抽象类: 还有一些从Item派生的类是这样的: 我不明白为什么我不能使用泛型调用构造函数: 我知道可以有一个没有构造函数的类型,但是这种情况是不可能的,因为Pencil具有没有参数的构造函数,而Item是抽象的。但是我从eclipse中得到了这个错误: 无法实例化 我不明白为什么的 T类型 ,以及如何避免这种情况? 问题答案: 无法使用Java类型系统来强制类层次结

  • 问题总结:我想传递一个带有类型参数(如

  • 问题内容: 我有一个通用函数,该函数调用Web服务并将JSON响应序列化回一个对象。 我要完成的是等效于此Java代码 我要完成的方法签名正确吗? 更具体地说,将参数类型指定为正确的做法是正确的吗? 调用该方法时,我将其作为returningClass值传递,但是出现编译 错误“无法将表达式的类型’()’转换为’String’类型” CastDAO.invokeService(“test”, wi