我是Java Reflection和泛型的新手,我正在努力理解它们。在这里,我遇到了一个问题。我可以制作列表和地图或其他东西..但我可以制作一个类的地图吗?
我有这个班级
public class ClassA{}
public class ClassB extends ClassA{}
public class ClassC extends ClassA{}
等等.. 现在我想要一个像这个Map()的地图; 在这张地图中,我可以放置从A.这很好的任何东西。但是如果我想存储这样的东西怎么办:
ClassX extends ClassA...
//some stuff
Map<String, ?????> customMapForTest = new HashMap<>();
customMapForTest.add("customKey", ClassX.class);
所以我会根据我的设置,使用某些我想要使用的类的模板地图。
这样的事情可能吗?如果我想在地图中存储这种.class文件,它会如何被调用?
为了了解情况,我有自己的应用程序//不要担心,这不是一个公共项目或其他东西......只是为了进行实验。 我有一个像这样的字符的文件:X7WE2C3AD4A2 只是一些随机的东西。 现在我有一个文件阅读器,它读取每个字符并在此基础上搜索我创建的地图,获取该文件的类并创建该类的新实例并根据类型添加一些值。
示例:
customMapForTesting.get("X").getClass().getDeclaredConstructor(int.class,String.class).newInstance(numberVariable, stringVariable);
我将新实例存储到不同的地图中并在其他一些内容中使用它。 问题是我需要扩展模板的所有可能对象,我不想在templateMap中存储实例......
答案 0 :(得分:2)
java.lang.Class
类型
Map<String, Class<?>> map = new HashMap<>();
map.put("string",String.class);
请注意,int.class
与Integer.class
System.out.println(int.class.equals(Integer.class)); //false
System.out.println(int.class.equals(Integer.TYPE)); //true