【问题标题】:What else are permitted extraordinary java method names?还允许哪些特殊的 java 方法名称?
【发布时间】:2015-02-04 12:58:46
【问题描述】:

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

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

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

【问题讨论】:

  • JLS 回答了这个问题。你检查了吗?您显然知道它的存在,因为您将它用作标签。
  • 我希望这是一个实用的问题!千万不要这样写方法的名字!!
  • 更有可能是一道考试题。
  • 你也可以使用方法名String _() { return "I've never been expected anyone would invoke me"; }
  • 您期待什么?您是否正在寻找其他字符,例如在方法之前使用的 $

标签: java jls


【解决方案1】:

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

标识符必须以“Java 字母”开头,其余部分必须由“Java 字母或数字”字符组成。

JLS 说:

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

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

字母和数字可能来自整个 Unicode 字符集,它支持当今世界上使用的大多数书写脚本,包括中文、日文和韩文的大型集。这允许程序员在他们的程序中使用以他们的母语编写的标识符。

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

【讨论】:

  • 这也是我到达的地方。
  • 那么,你为什么要问这个问题——你还有没有回答的问题吗?
  • @Jesper 我只是等待几分钟,我可以接受你的回答。
【解决方案2】:

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

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

【讨论】:

  • 请注意,下划线作为标识符会在 8 中产生警告,在 9 中产生错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
相关资源
最近更新 更多