52 java
最近我读到了Java变量名中允许使用符号$,但具有特殊含义.不幸的是,没有提到这个特殊含义是什么.
因此我在这里问:Java中变量名中$的特殊含义是什么?
这是来自的确切报价
Java:问题解决和编程简介
来自Walter Savitch:
Java允许美元符号符号$出现在标识符中,但这些标识符具有特殊含义,因此您不应在标识符中使用$符号.
NPE*_*NPE 51
$编译器在内部使用它来装饰某些名称.维基百科给出了以下示例:
public class foo {
class bar {
public int x;
}
public void zark () {
Object f = new Object () {
public String toString() {
return "hello";
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
编译此程序将生成三个.class文件:
foo.class,包含主(外)类 foofoo$bar.class,包含指定的内部类 foo.bar foo$1.class,包含匿名内部类(方法的本地foo.zark)所有这些类名都有效(因为$JVM规范中允许使用符号).
与此类似,javac使用$在一些自动生成的变量名:例如,this$0等人用于隐式this从内部类到它们的外类的引用.
最后,JLS建议如下:
该
$字符应仅用于机械生成的源代码,或者很少用于访问遗留系统上的预先存在的名称.
| 归档时间: |
|
| 查看次数: |
30709 次 |
| 最近记录: |