对于这个措辞奇怪的问题感到抱歉,但我想知道如何获取字符串并使用它创建一个新对象。所以我有100多个问题,如果我想运行,比方说问题57,我会Problem p = new p57();
然后p.run()
来解决问题。我想接受用户输入,然后使用它来解决问题.run()
,而不必创建超过100个问题
答案 0 :(得分:4)
使用Class.forName()
获取Class
个实例。您可以使用Class.newInstance()
创建该类的新对象。
String className = String.format("org.example.problem.P%d", 57);
Class<Problem> clazz = (Class<Problem>) Class.forName(className);
Problem problem = clazz.newInstance();
problem.run();
答案 1 :(得分:1)
您应该使用Reflection概念来执行此操作
Class.forName(className);
答案 2 :(得分:0)
Class c = Class.forName(name);
c.newInstance();
如果名称是&#34;标准化&#34;,例如,他们的编号与您说的一样,则这是微不足道的。
如果他们没有实现接口,您可以使用内省来运行该方法,否则您只需在您创建的实例上调用接口方法。