Map<String, Class1> map;
map.put("1", Class1<String, Integer> obj1);
map.put("2", Class1<String, Double> obj2);
map.put("3", Class1<Integer, Double> obj3);
现在,当我在地图上迭代时…我能以某种方式获得每个Class1对象的类型(K,V)吗??
根据JVM规范,这是不可能的。
泛型类型仅在编译时可用。在运行时,只有对象
。
您只有2个选择:
interface TypeConverter {
boolean isValid(String str); // call it before to check if current converter valid for required transform or not
Class1 converts(String str); // call it to convert
}
final TypeConverter converters = new ArrayList<>();
converters.add(new OneTypeConverter());
converters.add(new TwoTypeConverter());
public static Class1 convert(String str) {
for(TypeConverter convereter : converters)
if(converter.isValid(str))
return converter.convert(str);
throw new RuntimeException("No suitable converter found");
}
问题内容: 有没有办法检索为Foo的实现而给出的T? 例如, 将返回绿色。 问题答案: 与其他答案相反,您可以获得通用参数的类型。例如,将其添加到通用类内部的方法中,将获得该类的第一个通用参数(在您的情况下): 我在我编写的通用Hibernate DAO中使用了此技术,因此我可以获得持久化的实际类,因为Hibernate需要它。有用!
如何获取这个类的类型?对于上下文,我使用ModelMapper,我需要类类型T从S转换为T。 背景: 我已经尝试了N种方法,其中我放置了“//一些方法来获取类型”,但没有任何效果。例如: 或
我不想为每个类型T编写这个方法只是为了调用getMessage()并将其传递给下一个方法。 有可能写出这样的方法吗?我只想访问ConstraintViolation接口的方法,这些方法不依赖于类型T(如字符串getMessage())。
我有很多实体扩展了实体,也有很多数据扩展到 我有一个通用的存储库、服务和映射器,如下所示 我的仓库: 我的服务: 我的地图绘制者: 我想在方法中从T创建一个对象,在类中从方法中从Dto创建一个对象
问题内容: 为什么这是错误的: ? 给定一个类对象,没有办法实例化特定类型的类吗? 显然,我永远不会直接这样做,这只是显示所需内容的一个示例。在实际的代码中,我需要不知道类型的名称。例如 问题答案:
我有以下问题。 我必须将json请求解析为包含泛型类型字段的对象。 编辑 我使用常规类类型进行了一些测试(因此我在将其替换为泛型之前使其工作)。现在解析单个元素效果很好。 问题是何时需要从该类中解析出列表对象。 所以我不得不告诉jackson,我的T是list类型,而不仅仅是AlbumModel。 这是我尝试过的。 但是上面的代码不起作用。这种情况的解决方案是什么? 我的泛型类型在List响应模型