Java 父对象的孙子实例返回false

Java 父对象的孙子实例返回false,java,javafx,Java,Javafx,在检查以下类之间的关系时,无法找出代码返回false的原因 public abstract class Controller { public Controller(){}; public abstract void init(); } public class OperationController<T> extends Controller { public OperationController(){}; public void init()

在检查以下类之间的关系时,无法找出代码返回false的原因

public abstract class Controller {
    public Controller(){};
    public abstract void init();
}

public class OperationController<T> extends Controller {
    public OperationController(){};
    public void init() {
    // here something happens
    };
}

public class DailyOperationController extends OperationController<DailyOperation> {
    public DailyOperationController (){};
    public void init() {
    // here something happens
    };
}

如果条件在检查OperationController对象时返回true,在检查DailyOperationController对象时返回false。我怀疑主要的问题是我无法理解抽象的关键字概念,所以我将感谢您的帮助。我希望能够初始化OperationController对象和DailyOperationController。

您是否确认
loader.getController()
控制器
,更重要的是,它不是
null
?从逻辑上讲,如果
loader.getController()
返回一个
Controller
,代码应该可以工作。是的,这是一个NullPointerException。加载程序加载时没有问题,但父级为空。搜索了15分钟,但不知道如何修复它。原因一定很普遍,找到了祸根。我对视图使用了相同的结构(OperationController相关的FXML文件包括DailyOperationController相关的FXML文件),当我调用controller OperationController并执行其init()时,不会调用DailyOperationController init()。如果不调用
FXMLLoader.load
实例方法,则不会调用DailyOperationController init()(或者您将
setController
与非
null
参数一起使用),无论在这种情况下使用的是什么类型,
控制器
属性都是
null
instanceof
都会产生false。既然您没有将任何信息作为参数传递给
init
,或者之前没有调用传递信息的任何其他方法,为什么不简单地使用
初始化
?放弃了可初始化的接口bec因为我想做的一切都必须在场景创建后设置。
//somewhere in Main class
    FXMLLoader loader = new FXMLLoader(Main.class.getClassLoader().getResource(panel.getFxmlPath()));
    if(loader.getController() instanceof Controller)
        ((Controller) loader.getController()).init();
//somewhere in Main class