我是 Java 反射和泛型的新手,我正在尝试理解它们。在这里我遇到了一个问题。我可以制作列表和 map 或其他东西..但是我可以制作类的 map 吗?
例如,我有这个类(class)
public class ClassA{}
public class ClassB extends ClassA{}
public class ClassC extends ClassA{}
等等.. 现在我想要一个像这样的 map Map(); 在这张 map 中,我可以放置从 A 延伸的任何内容。那很好。但是如果我想存储这样的东西怎么办:
ClassX extends ClassA...
//some stuff
Map<String, ?????> customMapForTest = new HashMap<>();
customMapForTest.add("customKey", ClassX.class);
所以我将有一些类似我想根据我的设置使用的某些类的模板映射的东西。
这样的事情可能吗?如果我想将这种.class文件存储在map中,该如何调用?
为了更深入地了解情况,我有自己的应用程序//别担心,这不是一个公共(public)项目或其他东西..只是为了实验。 我有一个包含一些字符的文件,如下所示:X7WE2C3AD4A2 只是一些随机的东西。 现在我有一个文件读取器,它读取每个字符,并基于它搜索我创建的映射,获取该文件的类并创建该类的新实例,并根据类型添加一些值。
示例:
customMapForTesting.get("X").getClass().getDeclaredConstructor(int.class,String.class).newInstance(numberVariable, stringVariable);
我将新实例存储到不同的 map 中,并将其用于其他一些东西。 问题是我需要扩展我的模板的所有可能的对象,并且我不想将实例存储在 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
关于java - 如何制作.class的 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33305662/