下划线在这个Java代码中实际做了什么?[已关闭]

2022-08-31 12:27:27

我刚刚开始学习Java。

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

不幸的是,我无法阅读此内容。对我来说,它看起来像Perl。

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

这是什么意思?


答案 1

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

重命名类后:

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

并清理了:

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

你可以用这个奇怪的命名来发疯:)

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

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

class 合法類別名稱{合法類別名稱(){}}

答案 2

_是类名,下划线是有效的 Java 变量名,您只需要缩进代码即可对其进行去模糊处理:

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

喜欢:

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

编辑:感谢@Daniel费舍尔

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

总结

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

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

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

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