我的项目分配程序有问题,抛出多个 Tesla
Apple Inc.
Sony
Sony
Sony
Sony
。我认为问题源于 ClassNotFoundException
类,它是游戏中所有项目的抽象超类。每个项目都必须受类限制,因此在构造函数中,字符串 BaseGear
作为参数提供,然后我尝试将其转换为类名并添加到名为 restrict
的列表中。提供的字符串有时可能只包含一个类的名称,有时只包含两个类的名称,这就是我必须拆分字符串的原因。
classRestrictions
知道如何解决这个问题吗?
try {
if (restrict.contains(",")) {
String[] tmp = restrict.split(",");
for (String s : tmp) {
Class classType = Class.forName(s);
classRestrictions.add(classType);
}
} else {
Class classType = Class.forName(restrict);
classRestrictions.add(classType);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
答案 0 :(得分:1)
方法 Class.forName(String className)
需要一个完全限定的名称,这意味着与包。请参阅 JavaDoc:
className - 所需类的完全限定名称。
注意堆栈跟踪说 "com.dt180g.project.gear.Weapon"
- 我注意到字符串中没有包含包。此要求的目的是避免类歧义,因为不同包中可能存在同名类。
解决方法:需要传递包含完整包名的String,例如传递String querySelector
。