尝试根据TeamLeader或Engineer的istance打印出对象数组的内容时,出现了找不到符号错误。当我进入类的特定方法时,错误 pop :
Cannot find method
getTeamSize()
location classPerson
.
getTeamSize
来自TeamLeader
子类。与其他子类特定方法中的方法配对的错误相同。System.out.printf()
中的第112和117行发生错误:try {
in = new ObjectInputStream(new FileInputStream("persons.dat"));
Person[] personList = new Person[3];
for (int i = 0; i < personList.length; i++) {
personList[i] = (Person) in.readObject();
}
System.out.printf("%-20s %3s %10s %10s", "Name", "Age", "Team Size", "Experience\n");
for (int x = 0; x < personList.length; x++) {
if (personList[x] instanceof TeamLeader) {
System.out.printf("-20s %3i %10i %10s\n",
personList[x].getName(), personList[x].getAge(),
personList[x].getTeamSize(), " ");
} else {
System.out.printf("-20s %3i %10s %10.1f\n",
personList[x].getName(), personList[x].getAge(),
" ", personList[x].getExperience());
}
}
System.out.println();
} catch (IOException e) {
System.out.println("Problem reading file");
e.printStackTrace();
} catch (ClassNotFoundException e) {
System.out.println("Could not find designated class");
e.printStackTrace();
}
最佳答案
我想getTeamSize()
方法仅存在于TeamLeader
类中,而不存在于Person
类中。因此,您需要将Person强制转换为TeamLeader才能使用该方法:
if (personList[x] instanceof TeamLeader){
TeamLeader teamLeader = (TeamLeader) personList[x];
System.out.printf("-20s %3i %10i %10s\n",
teamLeader.getName(), teamLeader.getAge(),
teamLeader.getTeamSize(), " ");
}
https://stackoverflow.com/questions/15969886/