【发布时间】:2018-03-19 04:17:54
【问题描述】:
我正在创建一个程序,我在运行时使用例如:
String hero1builder = "index.";
System.out.println("Enter hero 1:");
hero1 = scanner.nextLine();
hero1builder += hero1;
hero1cls = Class.forName(hero1builder);
System.out.println("Hero 1 found");
所有这些代码都在 try/catch 中并按预期工作。 当我想引用我引用的类中的变量时,我的挑战就来了。
在编译时,java 注意到我想在这里引用的变量还不能被解析并且它不会编译。我怎样才能绕过这个,所以我可以引用类内部的变量?
String[] hero1list = hero1cls.counterList;
我尝试了许多方法来引用变量 counterList,但没有一个奏效。 hero1cls 保持动态很重要,否则我的程序将无法运行。
(在这个例子中, index 是包,所以 index.Abaddon.counterList 是我想要引用的。如果我这样明确地写出来,这将非常有效。)(PS 2:这不是范围问题. counterList 是这个程序中唯一会抛出错误的东西,并且 hero1cls.getField() 等方法有效。)
这是我引用的类的示例:
package index;
public class Abaddon {
public static String[] counterList = {"Axe",
"AncientApparition",
"Doom",
"Lina",
"Lion",
"OutworldDevourer",
"ShadowDemon",
"Slark",
"Undying"
};
}
【问题讨论】:
-
以这种方式创建的类需要
implement一个普通的interface。查找这些关键词以及如何对其进行编码。 (另外,classForName()几乎可以肯定是错误的方法。只要做一个普通的类,它会更容易。)
标签: java class dynamic compiler-errors