gpt4 book ai didi

Java - 为什么允许变量名作为类型名

转载 作者:行者123 更新时间:2023-12-01 18:46:08 26 4
gpt4 key购买 nike

假设我有类 ClassA

我可以声明一个变量如下

public ClassA ClassA;

注意:- 变量名称与类型名称相同并且没有编译错误。

当您想要调用静态方法时,这可能会导致困惑

ClassA.someStaticMethod();

在上面的语句中,ClassA将被视为实例变量,如果它为null,则无法调用静态方法。

为什么它仍然被允许?

是否存在任何可能有益的用例?

最佳答案

if it is null then it is impossible to call static method.

这是可能的:

public final class Foo
{
public static void yuck()
{
System.out.println("Yuck!");
}

public static void main(final String... args)
{
final Foo foo = null;
foo.yuck(); // compiles, and does the job
}
}

尽管这看起来可能违反直觉,但事实是静态方法只需要知道;即使 Foo 的实例为 null(如上例所示),JVM 也知道它属于类 Fooyuck() 作为一个静态方法,它不会“取消引用”实例,因为它不需要这样做;因此,没有 NPE。

Why is it allowed?

因为这是一个合法的 Java 标识符 ( JLS, section 6.2 )。 Java 标识符的唯一限制是它们不能是关键字。

Are there any Use Cases where this may be beneficial?

你可能可以自己找出答案:尽你所能,我不相信你能找到一个;)

关于Java - 为什么允许变量名作为类型名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17764184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com