还有什么允许非凡的java方法名称?

时间:2014-12-06 11:58:52

标签: java jls

我知道$可以用作Java中的方法名称。还有什么?

class MyClass {
    String $() {
        return "I've never been expected anyone would invoke me";
    }
}

这实际上是一个实际问题。我正在寻找$以外的其他人。

2 个答案:

答案 0 :(得分:6)

方法名称必须是有效的标识符。有关什么是有效标识符,请参阅Java语言规范:3.8 Identifiers

标识符必须以" Java letter"开头。其余的必须包含一个" Java字母或数字"。

JLS说:

  

" Java字母"包括大写和小写ASCII拉丁字母AZ(\ u0041- \ u005a)和az(\ u0061- \ u007a),以及由于历史原因,ASCII下划线(_,或\ u005f)和美元符号($,或\ u0024)。 $符号应仅用于机械生成的源代码,或者很少用于访问旧系统上预先存在的名称。

     

" Java数字"包括ASCII数字0-9(\ u0030- \ u0039)。

     

可以从整个Unicode字符集中提取字母和数字,该字符集支持当今世界中使用的大多数书写脚本,包括中文,日文和韩文的大集。这允许程序员在他们的程序中使用以其本地语言编写的标识符。

请特别注意,它表示您不应在源代码中使用$(即使它是允许的字符)。

答案 1 :(得分:1)

下划线_也是方法名称的有效字符

class MyClass {
    static String _() {
        return "I've never been expected anyone would invoke me";
    }

    public static void main(String[] args) {
        String s =  _();
        System.out.println(s);
    }

}

输出

I've never been expected anyone would invoke me