Доступ к методу суперкласса подкласса через другой класс в Java - PullRequest
0 голосов
/ 31 декабря 2018

Каково лучшее решение для этой проблемы?

Это суперкласс

public class Views<T> {

private T controller;

public Views() {
}

public Stage getStage(Node object){
    return (Stage) object.getScene().getWindow();
}

public T getController(){
    return controller;
}

public void setController(T controller){
    this.controller = controller;
}

}

У меня есть этот интерфейс:

public interface UserView extends Observer{
    public void setLoginObjects(Parent root);
    public void loginStartUI() throws Exception;

    public void setCriarUserObjects(Parent root, User user);
    public void criarUserStartUI(User user) throws Exception;
}

У меня есть этот подклассПросмотров:

public class UserViewImpl extends Views<UserController> implements UserView{
...

И у меня есть этот класс:

public class UserController {

private UserView view;
private UserDAOImpl model;

public UserController(UserView view, UserDAOImpl model) {
    this.model = model;
    this.view = view;
    view.setController(this);
    this.model.addObserver(view);
}
...

Какое лучшее решение для этой проблемы?Должен ли я собрать Views и UserView?(Проблема для этого решения в том, что у меня будет больше представлений, например, у меня есть ParqueView и ParqueViewImpl, которые в основном будут иметь те же методы, что и Views, поэтому будет повторный код, и я хочу избежать этого)

Основная проблема заключается в том, что внутри моего UserController я передаю параметр UserView, который не имеет доступа к методам суперкласса, и мне нужен доступ к setController, который находится в Views классеНет смысла менять тип UserView на Views в userController из-за MVC

1 Ответ

0 голосов
/ 31 декабря 2018

Похоже, вам здесь не нужны дженерики.Достаточно просто использовать интерфейс.

Создайте интерфейс Controller, который будут реализованы вашими двумя контроллерами.Тогда вы можете полностью избавиться от <T> и использовать этот интерфейс.

...