获取字符串并将其作为类运行

时间:2014-01-08 04:17:37

标签: java class interface

对于这个措辞奇怪的问题感到抱歉,但我想知道如何获取字符串并使用它创建一个新对象。所以我有100多个问题,如果我想运行,比方说问题57,我会Problem p = new p57();然后p.run()来解决问题。我想接受用户输入,然后使用它来解决问题.run(),而不必创建超过100个问题

3 个答案:

答案 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;,例如,他们的编号与您说的一样,则这是微不足道的。

如果他们没有实现接口,您可以使用内省来运行该方法,否则您只需在您创建的实例上调用接口方法。