下划线在这个Java代码中实际做了什么?[已关闭]
我刚刚开始学习Java。
帮助我学习的朋友刚刚给我发了这个,并说'弄清楚'。
不幸的是,我无法阅读此内容。对我来说,它看起来像Perl。
class _{_ _;_(){_=this;}}
这是什么意思?
我刚刚开始学习Java。
帮助我学习的朋友刚刚给我发了这个,并说'弄清楚'。
不幸的是,我无法阅读此内容。对我来说,它看起来像Perl。
class _{_ _;_(){_=this;}}
这是什么意思?
_
是类名。这是一个非常令人困惑的问题,但它有效!
重命名类后:
class Something {Something something;Something(){something=this;}}
并清理了:
class Something {
Something something;
Something() {
something=this;
}
}
你可以用这个奇怪的命名来发疯:)
class _{_ __;_ ____;_(){__=this;____=__;}_(_ ___){__=___;}}
事实上,甚至支持Unicode,所以这是有效的:
class 合法類別名稱{合法類別名稱(){}}
_
是类名,下划线是有效的 Java 变量名,您只需要缩进代码即可对其进行去模糊处理:
class _{
_ _;
_(){
_=this;
}
}
喜欢:
class A{
A A;
A(){
A=this;
}
}
编辑:感谢@Daniel费舍尔
类型名称和变量名称具有不同的命名空间。例如,代码在Java中是有效的。
class FOO { FOO FOO; }
总结
_
是一个类名,例如在class _{
_
是类成员名称,例如 at 和_ _;
_=this
_
是构造函数名称,例如_()
请记住:Java 使用六个不同的命名空间:
- 包名称,
- 类型名称,
- 字段(变量)名称,
- 方法名称,
- 局部变量名称(包括参数),以及
- 标签。
此外,每个声明的枚举都有自己的命名空间。不同类型的相同名称不冲突;例如,方法的命名可能与局部变量相同。