gpt4 book ai didi

java - 从Java中的内部类访问外部类 "super"

转载 作者:IT老高 更新时间:2023-10-28 21:07:14 25 4
gpt4 key购买 nike

如何从内部类访问外部类的super

我正在重写一个方法以使其在不同的线程上运行。从内联线程,我需要调用原始方法,但当然只是调用 method() 会变成无限递归。

具体来说,我正在扩展 BufferedReader:

public WaitingBufferedReader(InputStreamReader in, long waitingTime)
{
[..]
@Override
public String readLine()
{
Thread t= new Thread(){
public void run()
{
try { setMessage(WaitingBufferedReader.super.readLine()); } catch (IOException ex) { }
}
};

t.start();
[..]
}
}

这个地方给了我一个我找不到的 NullPointerException。

谢谢。

最佳答案

像这样:

class Outer {
class Inner {
void myMethod() {
// This will print "Blah", from the Outer class' toString() method
System.out.println(Outer.this.toString());

// This will call Object.toString() on the Outer class' instance
// That's probably what you need
System.out.println(Outer.super.toString());
}
}

@Override
public String toString() {
return "Blah";
}

public static void main(String[] args) {
new Outer().new Inner().myMethod();
}
}

上述测试在执行时显示:

Blah
Outer@1e5e2c3

关于java - 从Java中的内部类访问外部类 "super",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7874875/

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