gpt4 book ai didi

java匿名内部类无法访问的代码

转载 作者:行者123 更新时间:2023-12-02 08:11:58 26 4
gpt4 key购买 nike

当您编写无法访问的代码时,Java 编译器会发出警告。例如

public void go()
{
return;
System.out.println("unreachable");
}

但是,当您在匿名类中定义无法从任何地方访问的新方法时,编译器不会提示。它允许你这样做,为什么?例如,

class A
{
public void go()
{
System.out.println("reachable - A");
}
}
class B
{
public static void main(String [] args)
{
A a = new A() {
public void go()
{
System.out.println("reachable - B");
}
public void foo()
{
System.out.println("unreachable - B");
}
};
a.go(); // valid
a.foo(); // invalid, compiler error
}
}

最佳答案

首先:Eclipse 确实通知我 foo() 从未在本地使用。然而,由于其他答案指出的原因,这是一个警告而不是错误。

请注意,有一种方法可以到达 foo():

new A() {
public void go()
{
System.out.println("reachable - B");
}
public void foo()
{
System.out.println("unreachable - B");
}
}.foo();

这是可行的,因为表达式 new A() {} 的类型不是 A,而实际上是 A 的匿名子类。该子类有一个公共(public) foo 方法。

由于不能拥有相同类型的变量,因此无法从变量中以这种方式访问​​ foo()

关于java匿名内部类无法访问的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4756633/

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