Ссылка на параметр parent без изменения конструктора - PullRequest
0 голосов
/ 01 июня 2018

У меня есть какая-то структура кода, подобная этой:

     public class Mainframe{
         private Object o;

            public Mainframe (Object o){
                this.o = o;
            }

            void xy(){
                new Newclass(this);
            }

     }

   public class Newclass{
        Mainframe frame;

        public Newclass(Mainframe frame){
           this.frame = frame;
        }

    }

Находясь в Newclass, как я могу использовать Object o без изменения конструктора?Это возможно?

1 Ответ

0 голосов
/ 03 июня 2018

Нет.Частное означает личное.Самая причина, по которой существует private , заключается в том, чтобы запретить то, что вы спрашиваете, можете ли вы это сделать.Если вы хотите сделать это, то вам не нужно использовать private , так как это не имеет никакой другой цели, кроме как блокировать вас от этого.

Другим решением было бы сохранить Object o закрытым, нодобавьте аксессор к нему в классе Mainframe:

public class Mainframe{

  private Object o;

  public Mainframe(Object o) {
    this.o = o;
  }

  void xy() {
    new Newclass(this);
  }

  public getO() {
    return o;
  }

}

-

public class Newclass{
  Mainframe frame;

  public Newclass(Mainframe frame){
    this.frame = frame;
  }

  public void printMainframeO() {
    System.out.println(frame.getO());
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...