2016-09-23 2 views
0

У меня есть два класса: WorldOfRobots и Robot (abstract). Оба являются общедоступными. Мир роботов - это в основном арраист робота. Тогда у меня есть классный телескоп, который является продолжением робота. Я пытаюсь создать метод в классе Telebot, который будет идентифицировать и получить список роботов, где находится текущий объект Telebot. Например: Я создаю 2 World of Robots (wor1 и wor2), а затем 1 telebot (r1). Я добавляю r1 в wor1. Я хотел бы получить способ получить список роботов wor1 в методе класса telebot.Java Получить список объектов из другого класса

Немного кода.

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

вы можете передать дополнительный параметр 'WorldOfRobots wor' конструктору' Telebot' и назначить его там. – SomeJavaGuy

+0

Я пахнущая циклическая зависимость здесь, может быть, вы могли бы подробнее остановиться на своем примере использования того, что используется в классе telebot. Что вы хотите достичь с помощью объединения телебатов и мира роботов. – Sikorski

+0

Я хотел бы зациклить свой список роботов, чтобы проверить, есть ли у моего телебата некоторые атрибуты с другим. Обратите внимание, что, как правило, есть только один WoR, и к нему могут быть добавлены несколько роботов. – Cephou

ответ

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); Я не знаю, как ваши классы точно взаимодействуют таким образом, я не могу расширить с помощью этого метода Больше.

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, измените мир на список.

Смежные вопросы