【发布时间】:2018-06-13 00:43:30
【问题描述】:
我使用一种方法从一个包中收集所有类并将它们保存到一个数组中:
Class[] classes = ClassUtils.getClasses("xyz.keahie.werewolf.character.characters");
它们都有“Character”类作为超类,当我打印它们时,我得到了这一行:
class xyz.keahie.werewolf.character.Character
当我想将它们转换为“Character”类时,我总是会收到 ClassCastException。我做错了什么?
编辑: 这是我得到的完整错误:
Exception in thread "main" java.lang.ClassCastException: java.lang.Class cannot be cast to xyz.keahie.werewolf.character.Character
at xyz.keahie.werewolf.character.CharacterManager.<init>(CharacterManager.java:29)
at xyz.keahie.werewolf.GameManager.<init>(GameManager.java:26)
at xyz.keahie.werewolf.Game.main(Game.java:9)
这里是我的源代码:
Class[] classes = ClassUtils.getClasses("xyz.keahie.werewolf.character.characters");
for (Class clazz : classes) {
Object object = clazz.getSuperclass();
System.out.println(object.toString());
if (object.getClass().equals(xyz.keahie.werewolf.character.Character.class)) {
System.out.println("Yes");
} else {
System.out.println("Nope");
}
Character character = (Character) object;
if (!this.characters.contains(character)) {
addSpecialCharacter(character);
}
}
抱歉,开头缺少信息
【问题讨论】:
-
可能是您试图将其转换为错误的 Character 类
-
你能粘贴完整的错误吗,我怀疑它会显示迈克尔斯的答案是正确的。
-
我刚刚添加了完整的错误和我的源代码