【问题标题】:Accessing superclass method of subclass through another class in java通过java中的另一个类访问子类的超类方法
【发布时间】:2019-05-28 04:03:23
【问题描述】:

这个问题的最佳解决方案是什么?

这是超类

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);
}
...

这个问题的最佳解决方案是什么? 我应该把ViewsUserView 放在一起吗? (这个解决方案的问题是我会有更多的视图,例如我有ParqueViewParqueViewImpl,基本上和Views有相同的方法,所以会有重复的代码,我想避免这种情况)

主要问题是在我的UserController 内部我作为参数UserView 传递,它无法访问超类方法,我需要访问位于Views 类中的setController,它没有由于 MVC,将 UserView 的类型更改为 userController 中的 Views 是有意义的

【问题讨论】:

  • "这个问题的最佳解决方案是什么?" - 你从来没有解释过问题是什么(标题不够)。
  • ParqueView 是否也有/需要来自UserView 的方法?
  • @user7 不,ParqueView 需要 Views 中的方法
  • @JacobG。抱歉,虽然问题很明显,但我还是编辑帖子吧!
  • 你可以把View做成一个接口,让UserView实现它?

标签: java interface subclass superclass


【解决方案1】:

看起来您在这里不需要泛型。只需使用一个接口就足够了。

创建一个Controller 接口,您的两个控制器将实现该接口。然后你可以完全摆脱&lt;T&gt; 并使用这个接口。

【讨论】:

    猜你喜欢
    • 2016-01-16
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2017-08-22
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多