81

我刚开始学习Java。

我帮助我学习的朋友刚刚给我发了这个,并说“弄清楚这个”。

不幸的是,我无法阅读此内容。在我看来,它就像 Perl。

class _{_ _;_(){_=this;}}

这是什么意思?

4

3 回答 3

156

_是类名。这是一个非常令人困惑的问题,但它确实有效!

随着班级重命名:

class Something {Something something;Something(){something=this;}}

并清理:

class Something {
    Something something;
    Something() {
        something=this;
    }
}

你可能会因为这个奇怪的名字而发疯:)

class _{_ __;_ ____;_(){__=this;____=__;}_(_ ___){__=___;}}

事实上,甚至支持 Unicode,所以这是有效的:

class 合法類別名稱{合法類別名稱(){}}
于 2013-03-26T22:08:29.510 回答
71

_是类名,下划线是一个有效的 Java 变量名,你只需要缩进你的代码来去混淆它:

class _{
    _ _;
    _(){
     _=this;
   }
}

喜欢:

class A{
    A A;
    A(){
     A=this;
   }
}

编辑:感谢@Daniel Fischer

类型名称和变量名称具有不同的命名空间。例如代码class FOO { FOO FOO; }在 Java 中是有效的。

概括

  • _是一个类名,例如在class _{
  • _是类成员名称,例如 at_ _;_=this
  • _是构造函数名称,例如 at_()

请记住:Java 使用六个不同的命名空间:

  • 包名,
  • 类型名称,
  • 字段(变量)名称,
  • 方法名称,
  • 局部变量名(包括参数),和
  • 标签。

此外,每个声明的枚举都有自己的命名空间。不同类型的相同名称不冲突;例如,方法可能与局部变量命名相同

于 2013-03-26T22:09:45.127 回答
12

嗯,这是一个很好的例子。Java 允许 unicode 作为标识符,因此您可以编写如下内容:

class ⲥlass {
ⲥlass claѕѕ;
}

这里类名的 c 是 'ⲥ' (U+2CA5 COPTIC SMALL LETTER SIMA) 和

对象名称的“ѕ”(U+0455 西里尔小写字母 DZE)。

于 2013-03-27T12:19:06.507 回答