【问题标题】:Initializing and Declaring objects and methods初始化和声明对象和方法
【发布时间】:2016-06-12 00:43:02
【问题描述】:

我有以下问题,我不知道如何解决它。我正在寻找建议。我有一个实例数据(见下文)。这就是我想要做的:

killring 应该在声明时或在构造函数中初始化为new KillList()

private KillList killring;

KillList 是另一个类的子类。整个程序处理列表: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; 
    }
}

【问题讨论】:

  • 什么错误?哦,KillList 不是 AssassinNode
  • @ElliottFrisch 不兼容无法将 AssassinNode 转换为 KillList 类
  • 大概AssassinNode应该扩展(或实现)KillList
  • @ElliottFrisch 我该怎么做?
  • 没有看到KillList就无法告诉你。

标签: java object constructor


【解决方案1】:

无法编译的原因是你调用AssasinNode的构造函数来创建KillList,你需要使用KillList的构造函数,所以killring = new KillList(players.get(0))

但是我想指出一个小逻辑错误:您正在创建一个“KillList”,但它不能包含更多的玩家。如果您想要一个正确的列表,您需要在KillList 中添加一个列表成员字段以及在该列表中添加和删除的正确方法。

【讨论】:

  • 你是对的!我刚刚更新了结果。至于 KillList() - 它仍在进行中。共有三个类:KillList()、AssassinNodeData()、AssassinNodeClient()、AssassinNodeManager()。
  • @Ani 好吧!如果您认为此答案解决了您的问题,请不要忘记接受答案。如果您需要更多帮助,请随时更新您的问题或发布另一个问题。
猜你喜欢
  • 2012-11-23
  • 2021-06-21
  • 1970-01-01
  • 2015-11-24
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
相关资源
最近更新 更多