Доступ к классу, содержащему переменную экземпляра из ссылки на переменную - PullRequest
1 голос
/ 28 июня 2019

Я не уверен, заслуживает ли это вопроса, но вот он.

Если у меня есть какой-то класс, скажем,

public class myClass{
   Button btn = new Button;
   btn.setOnMouseEvent(myHandler);
   Text txt = "hello";
}

Теперь, если пользователь инициирует событие, я выполню некоторый код в myHandler. Там мне нужно получить доступ к переменной txt, но у меня есть только ссылка на button через event.getSource().
Итак, как я могу получить ссылку на класс, содержащий объект, возвращаемый event.getSource()?

Редактировать: идеи о названии также приветствуются!

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Ответ на самом деле довольно прост:

когда экземпляр X обработчика событий зависит от какого-либо объекта Y, тогда Y нужно сделать доступным для X.

Например:

  • добавление поля Y к классу X
  • и последующая передача экземпляра Y при выполнении new X(someY);, например

Другими словами: когдаваш MyClass (имена классов должны идти UpperCase!) создает экземпляр объекта myHandler, он может передавать «себя» (через this в обработчик).Конечно, это может привести к циклическим (плохим) зависимостям, выход из этого:

  • Y реализует SomeInterface
  • , обработчик узнает только SomeInterface, ион никогда не знает и не заботится о том, что экземпляр SomeInterface, переданный ему ... оказывается типа Y.
0 голосов
/ 28 июня 2019
If you are the one who crated MyHandler and if you can still modify the class then below style can be helpfull:


public class myClass{
   Button btn = new Button;
   Text txt = "hello";
   MyHandler myHandler = new MyHandler();

   myHandler.setMsg(txt );
   btn.setOnMouseEvent(myHandler);

}
class MyHandler {
    private msg;
    public setMsg(String msg){
      this.msg = msg;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...