我知道这个问题有点简单,但我真的想知道为什么而不是去文档假设我有这样的课程。
public class OuterClass{
public static void main(String[] args)throws Exception{
System.out.println(OuterClass.InnerClass.yearOfBorn);//works ok
System.out.println(OuterClass.InnerClass.returnYearOfBorn());//not works
System.out.println(OuterClass.InnerClass.returnYearOfBornAsPublic());//not works
}
private final class InnerClass{
private static final int yearOfBorn=13;
private static int returnYearOfBorn(){
return yearOfBorn;
}
public static int returnYearOfBornAsPublic(){
return yearOfBorn;
}
}
}
两种静态方法都抛出错误说明
修饰符 'static' 只允许在常量变量声明中使用
我知道文档指出
这在 Java 语言规范部分§8.1.3 中有描述
8.1.3 内部类和封闭实例
An inner class is a nested class that is not explicitly or implicitly declared static. Inner classes may not declare static initializers (§8.7) or member interfaces. Inner classes may not declare static members, unless they are compile-time constant fields (§15.28).
但我的问题是调用简单值或属性与调用静态方法的区别是什么,无论是公共的还是私有的?为什么可以调用属性而不是方法。
尚方宝剑之说
相关分类