Java从另一个类

时间:2016-09-23 09:59:59

标签: java

我有两个课程:WorldOfRobots和Robot(抽象)。两者都是公开的。机器人世界基本上是机器人的arraylist。 然后我有一个类机器人,这是机器人的扩展。 我正在尝试在类Telebot中构建一个方法,该方法将识别并获取当前对象Telebot所在的机器人列表。 例如: 我创建了2个机器人世界(wor1和wor2),然后是1个telebot(r1)。 我在wor1中添加了r1。 我想通过类telebot的方法获得一个wor1机器人列表的方法。

这是一些代码。

abstract class Robot {
// content
}

public class Telebot extends Robot
{
    // instance variables - replace the example below with your own
    private WorldOfRobots wor;

    public Telebot(String newName, String newDirection)
    {
        super(newName, newDirection);
    }

    public void something {

        // here I'm trying to get the list
        wor = new WorldOfRobots();
        ArrayList<Robot> robots = wor.getList();
        // Unfortunately this solution doesn't work cause I'm creating a new WOR. What I want is to get the WOR where the Telebot belong.
    }

}

public class WorldOfRobots {

// List of robots
private ArrayList<Robot> robots;

    public WorldOfRobots() {
    robots = new ArrayList<Robot>();
    }

    public ArrayList<Robot> getList() {
        return robots;
    }

}

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

你可以将你的课重构为这样......

public class Telebot extends Robot {

//your code and constructer here

public void something(WorldofRobots container){
  //this is the list containing your instance of telerobot, use it as you like
}

}

现在,您可以从外部课程调用robotInstance.something(listOfRobot); 我不确定你的类是如何完全交互的,所以我不能再扩展使用这种方法了。

答案 1 :(得分:0)

abstract class Robot {
private WorldOfRobots world;

public void setWorld(WorldOfRobots world)
{
    this.world=world;
}
// content
}

public class Telebot extends Robot
{
    public Telebot(String newName, String newDirection)
    {
        super(newName, newDirection);
    }   
    public void doSomething()
    {
        world.doSomethingElse();
    }

}

public class WorldOfRobots {

// List of robots
private ArrayList<Robot> robots;

    public WorldOfRobots() {
    robots = new ArrayList<Robot>();
    }
    public void addRobot(Robot robot)
    {
        robots.add(robot);
        robot.setWorld(this);
    }

}

在这种情况下,在WorldOfRobots类中存储Robot的引用是合理的。如果您希望机器人属于多个WorldOfRobots,则将世界变量更改为List。