我不知道如何进入电影我的我的课ProjectNode的方法,即从ExplorerManager经理这样的返回:为什么我不能调用setSomething()?
mgr.getRootContext().setSomething()
getRootContext()返回节点的对象,但我把类ProjectNode(扩展是AbstractNode,是AbstractNode扩展节点)转换为rootContext。
编译器不想吃那行代码。但它一定!
我不知道如何进入电影我的我的课ProjectNode的方法,即从ExplorerManager经理这样的返回:为什么我不能调用setSomething()?
mgr.getRootContext().setSomething()
getRootContext()返回节点的对象,但我把类ProjectNode(扩展是AbstractNode,是AbstractNode扩展节点)转换为rootContext。
编译器不想吃那行代码。但它一定!
((ProjectNode)mgr.getRootContext()).setSomething();
不要忘记检查的类型!
如果getRootContext()
返回Node
,那么您只能调用Node
中定义的方法,而不能在其子类中调用方法。您可以将返回值转换为另一个类,如果你需要的是:
Node rootContext = mgr.getRootContext();
if(rootContext instanceof ProjectNode){
ProjectNode rootProjectNode = (ProjectNode)rootContext;
rootProjectNode.setSomething();
} else {
//handle this case
}
如果setSomething()
不是Node
类上的公共方法,那么无论您如何尝试,都无法“喂养编译器”该代码。 正如所有智者所说的,你必须把结果投给定义你的方法的子类。
它的工作原理,谢谢 – badgirl 2010-03-26 15:24:15