Java中的这种语法是什么?我不承认

spe*_*0ne 3 java syntax

这是一个语法问题.

我正在查看一些开源文件,我遇到了一些我无法识别的语法,我希望你能为我清理它.

(这是从Main.java在犀牛调试器采取这里)

public static String[] processOptions(String args[])
    {
        String usageError;
        goodUsage: for (int i = 0; ; ++i) {
            if (i == args.length) {
                return new String[0];
            }
            String arg = args[i];
            if (!arg.startsWith("-")) {
                processStdin = false;
                fileList.add(arg);
                String[] result = new String[args.length - i - 1];
                System.arraycopy(args, i+1, result, 0, args.length - i - 1);
                return result;
            }
            if (arg.equals("-version")) {
                if (++i == args.length) {
                    usageError = arg;
                    break goodUsage;
                }
                int version;
                try {
                    version = Integer.parseInt(args[i]);
                } catch (NumberFormatException ex) {
                    usageError = args[i];
                    break goodUsage;
                }
Run Code Online (Sandbox Code Playgroud)

我的问题是什么goodUsage?这个语法的名称是什么,它用于什么?

mat*_*t b 16

它们是标签.它们习惯于能够将内部块分解成不是紧邻其周围的块.

以下是处理标签的Java语言规范的相关部分.

您可能以前没有看过它,因为99%的时间代码可以被重写为不使用这样的东西,这可能表明该方法做得太多了.

(另外我应该提到碰巧从搜索引擎遇到这个问题/答案的人,它不是新的语法 - 它自JLS版本之后就已存在.)

  • 100%的时间可以重写不使用它们,99.9%(也许应该是+ .1%)重写版本更清晰. (2认同)
  • 该描述强调了标签名称选择中的讽刺意味. (2认同)