如何制作.class的地图?

How to make map of .class?

我是 Java 反射和泛型的新手,我正在努力理解它们。在这里,我遇到了一个问题。我可以制作 or 和其他东西的列表和地图。但是我可以制作 类 的地图吗?

我有这个 class

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);

因此,根据我的设置,我将拥有某些我想使用的某些 classes 的模板图之类的东西。

这样的事情可能吗?如果我想在 map 中存储这种 .class 文件,它是如何调用的?

为了更深入地了解情况,我有自己的应用程序//别担心,这不是一个 public 项目或其他东西.. 只是为了试验。 我有一个包含这样一些字符的文件:X7WE2C3AD4A2 只是一些随机的东西。 现在我有一个文件 reader 读取每个字符并基于它搜索我创建的地图,获取该文件的 class 并创建该 class 的新实例并添加一些值基于类型。

示例:

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