2015-11-03 2 views
1
public class MainThread extends Thread implements Runnable{ 

    GameScreen g; 
    ObjectManager om; 

    public MainThread(){ 

    } 

} 

Так что я хочу сделать, это внутри объекта GameScreen в MainThread, я хочу, чтобы получить объект ObjectManager внутри gamescreen , Таким образом, я рассматриваю эту ситуацию, так как должно существовать ключевое слово, которое используется для ссылки на объект, внутри которого находится объект, а затем ссылается на объект внутри родителя.Как получить объект, который объявлен в другом объекте от другого объекта, объявленного в родительском объекте

public class GameScreen{ 
    public GameScreen(){ 
     // ObjectManager test = this.*parent object*.om; 
    } 
} 
+1

Чтобы это сделать, ваш класс GameScreen должен быть вложен в класс 'MainThread' ... В противном случае объект GameScreen не принадлежит MainThread, хотя' MainThread' относится к одному ... – Codebender

ответ

0

Поскольку вы не указали свой полный код, все немного неясно.

Если GameScreen объявлен в другом месте (например, в другом файле), то он может быть технически размещен в любом месте - экземпляр GameScreen не должен находиться внутри MainThread, поэтому он не имеет доступа к экземпляру ObjectManager. Вам нужно будет определить конструктор для GameScreen, который принимает экземпляр ObjectManager, а затем в конструкторе MainThread инициализирует g с помощью om.

Если вы хотите использовать GameScreen в MainThread (не обязательно лучший дизайн), вы можете сделать его в нестационарном внутреннем классе. Если вы определили весь класс GameScreen внутри MainThread, то каждый экземпляр GameScreen будет иметь (скрытую) ссылку на содержащий MainThread и, следовательно, экземпляр om.

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