【发布时间】:2014-05-27 00:31:24
【问题描述】:
public class EnclosingClass{
public void enclosingClassMethod(){
InnerClass iC = new InnerClass();
ic.innerClassPrivateMethod(); // this one works but why the following line doesn't //work
InnerClass.innerClassPrivateMethod(); // Why I can't call the method like this?
}
public class InnerClass{
private void innerClassPrivateMethod(){
}
}
}
为什么我们不能像InnerClass.innerClassPrivateMethod() 一样调用innerClassPrivateMethod()?我看到“无法从 EnclosureClass 类型对非静态方法 innerClassPrivateMethod() 进行静态引用”
如果我将innerClassPrivateMethod 和enclosingClassMethod 都更改为私有,我会收到错误
InnerClass iC = new InnerClass();
as “没有 Basics6 类型的封闭实例可访问。必须使用 enclosureClass 类型的封闭实例来限定分配。”
【问题讨论】:
-
回答标题问题:你绝对可以。你的代码会抛出什么错误?你查过吗?
-
因为它不是静态的。你需要一个对象来访问它。
-
I am not getting any error.那么显然没有问题...请明确您的要求。 -
抱歉,我收到无法对非静态方法 innerClassPrivateMethod() 进行静态引用的错误。但是这里的一切都是非静态的,对吧?我没有使用静态关键字
-
好的,现在把那个错误信息放到 SO 的搜索工具中。