初始化和声明对象和方法
问题描述:
我是编程新手,所以请裸照我。我有以下问题,我不知道如何解决它。我在寻找建议。我有一个实例数据(见下文)。这是我想要做的:初始化和声明对象和方法
当声明或在构造函数中时,killring应初始化为new KillList()
。
private KillList killring;
KillList是一个子类,其他类。整个程序处理Lists:LinkedLists和ArrayList。 构造函数将ArrayList中的元素添加到Killring中。每次将新节点添加到链接列表的末尾。
这是我到目前为止有:
public class AssassinManager {
private static class AssassinNode {
private String player;
private String killer;
private AssassinNode next;
private AssassinNode(String name) { // to be altered
this.player = name;
this.killer = null;
this.next = null;
}
}// End of AssassinNode - DONE
private KillList killring; //KillList object
private AssassinNode graveyard; //AssassinNodeData object
/* Constructor add names from arralyist to killring
without altering elements in arraylist */
public AssassinManager (ArrayList<String> players) {
if (players == null || players.isEmpty() == true) {
throw new IllegalArgumentException();
}
killring = new AssassinNode(players.get(0)); // AN ERROR IS PRESENTED HERE
}
这是我迄今KillList:
public class KillList extends AssassinNodeData {
public KillList(String player) {
super(player);
}
可能的答案:
public AssassinManager (ArrayList<String> players) {
if (players == null || players.isEmpty() == true) {
throw new IllegalArgumentException();
}
killring = new KillList(players.get(0));
KillList node = killring;
for (int i = 1; i < players.size(); i++) {
node.next = new KillList(players.get(i));
node = node.next;
}
}
答
之所以它不会编译的是,您正在调用AssasinNode
的构造函数来创建一个KillList
,您需要使用KillList
的构造函数代替,所以killring = new KillList(players.get(0))
。
但是我想指出一点逻辑错误:你正在创建一个“KillList”,但它不能包含更多的一个玩家。如果您想要一个正确的列表,您需要添加一个列表成员字段以及在KillList
内添加和从列表中删除的正确方法。
**什么**错误?哦,KillList不是'AssassinNode'。 –
@ElliottFrisch不兼容无法将AssassinNode强制转换为KillList类 – Ani
推测'AssassinNode'应该扩展(或实现)KillList。 –