我不知道如何访问我的类ProjectNode的方法,它从ExplorerManager mgr返回,如下所示:
mgr.getRootContext().setSomething()
getRootContext()返回Node对象,但是我将类ProjectNode(将AbstractNode,abstractNode extends extends)扩展为rootContext。
编译器不想吃那行代码。但它必须!
答案 0 :(得分:3)
如果getRootContext()
返回Node
,那么您只能调用Node
中定义的方法,而不能调用其子类中定义的方法。如果需要,可以将返回值强制转换为另一个类:
Node rootContext = mgr.getRootContext();
if(rootContext instanceof ProjectNode){
ProjectNode rootProjectNode = (ProjectNode)rootContext;
rootProjectNode.setSomething();
} else {
//handle this case
}
答案 1 :(得分:1)
((ProjectNode)mgr.getRootContext()).setSomething();
不要忘记检查类型!
答案 2 :(得分:0)
如果setSomething()
不是Node
类的公共方法,那么无论您如何尝试,都无法“为编译器提供”代码。
正如所有智者上面所说的那样,你必须将结果转换为定义setSomething()
方法的子类。