我刚开始学习Java.
我帮助我学习的朋友刚刚给我发了这个并说'弄清楚'.
不幸的是我无法读到这个.对我来说它看起来像Perl.
class _{_ _;_(){_=this;}}
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
Doo*_*nob 154
_
是班级名称.这是一个非常令人困惑的,但它的工作原理!
随着类重命名:
class Something {Something something;Something(){something=this;}}
Run Code Online (Sandbox Code Playgroud)
并清理:
class Something {
Something something;
Something() {
something=this;
}
}
Run Code Online (Sandbox Code Playgroud)
而你可以对这个奇怪的命名感到疯狂 :)
class _{_ __;_ ____;_(){__=this;____=__;}_(_ ___){__=___;}}
Run Code Online (Sandbox Code Playgroud)
实际上,甚至支持Unicode,因此这是有效的:
class ??????{??????(){}}
Run Code Online (Sandbox Code Playgroud)
Gri*_*han 71
_
是类名,下划线是一个有效的Java变量名,您只需缩进代码即可对其进行反混淆处理:
class _{
_ _;
_(){
_=this;
}
}
Run Code Online (Sandbox Code Playgroud)
喜欢:
class A{
A A;
A(){
A=this;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:感谢@Daniel Fischer
类型名称和变量名称具有不同的名称空间.例如,代码
class FOO { FOO FOO; }
在Java中有效.
摘要
_
是一个类名,例如在 class _{
_
是一个类成员名称,例如at _ _;
和_=this
_
是一个构造函数名称,例如at _()
请记住:Java使用六个不同的命名空间:
- 包名称,
- 类型名称,
- 字段(变量)名称,
- 方法名称,
- 局部变量名(包括参数)和
- 标签.
此外,每个声明的枚举都有自己的命名空间.不同类型的相同名称不冲突; 例如,方法可以被命名为与局部变量相同.
ash*_*kwd 11
那是个很好的例子.Java允许unicode成为标识符,因此您可以编写如下内容:
class ?lass {
?lass cla??;
}
Run Code Online (Sandbox Code Playgroud)
这里的班级名称c是'ⲥ'(U + 2CA5 COPTIC SMALL LETTER SIMA)和
对象名称'''(U + 0455 CYRILLIC SMALL LETTER DZE).
归档时间: |
|
查看次数: |
6259 次 |
最近记录: |