请问a.b和$ b有什么区别?

时间:2012-01-30 11:35:20

标签: java class syntax inner-classes

有时我会遇到aClass $ field而不是aClass.field这样的表达式。它在java中意味着什么?也许这是一个原始问题,但不可能在网上搜索$。肯定会给出非编程答案。所以,请帮助。

2 个答案:

答案 0 :(得分:4)

$文件表示根据JLS

  

$字符只能在机械生成的源中使用   代码,或者很少访问旧系统上的预先存在的名称。

类文件中的$表明(例如AClass$BClass.classBClass嵌套在AClass内。

A.B仅适用于代码级别,A$B位于生成的类级别。

答案 1 :(得分:2)

$在Java中没有特殊含义。它可用于命名每个变量或方法,也可用作第一个(或唯一)字符。在示例中,以下类是完全合法的。

public class Test {

    private int $;

    private int $field;

    private int my$field;

    private void $() {
    }

    private void $method() {
    }

    private void my$method() {
    }

}

但是,您无法使用$来命名课程。当Java编译器在类B中遇到内部类A时,生成的.class文件将被命名为A$B.class。因此,使用$字符命名类将导致编译错误。