我有两个课程: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;
}
}
感谢您的帮助。
答案 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。