来说明对比。看下面的java片段:
public class Janerio {
public static void main(String[] args) {
new Janerio().enemy();
}
public static void enemy() {
System.out.println("Launch an attack");
}
}
上面的代码工作得很好,似乎是对这个问题的回答,因为输出如下所示。
Launch an attack
但是在下一刻,当我运行以下代码段时
public class Janerio {
public static void main(String[] args) {
System.out.println(new Janerio().class);
}
}
我得到编译时错误
/Janerio.java:3: error: <identifier> expected
System.out.println(new Janerio().class);}
^
/Janerio.java:3: error: ';' expected
System.out.println(new Janerio().class);}
^
2 errors
我不明白为什么会出现这种情况,因为在前面的代码片段中,我能够在类实例的帮助下访问静态“敌人”函数,但这里证明是错误的。我的意思是为什么我不能在类实例的帮助下访问“.class”静态方法。将“.class”视为Janerio类的静态函数或成员是错误的吗?与两个片段的静态特征类似是错误的吗?但是,一旦我用类名调用“.class”,事情似乎就是“.class”本质上是静态的,但是在使用类的实例调用“.class”时它会偏离静态。
public class Janerio {
public static void main(String[] args) {
System.out.println(Janerio.class);
}
}
我们得到的输出:
class Janerio