我是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中。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句