为什么可以';在Java中,我是否可以从内线程类访问外部类?

为什么可以';在Java中,我是否可以从内线程类访问外部类?,java,compiler-errors,scope,Java,Compiler Errors,Scope,我有这些类及其嵌套类(请转到相关行): 编译器在第行给了我一个错误: ClientPanel.this.textArea.append(", recieved" + data); 在作用域中无法访问类型为Client.ClientPanel的封闭实例 如何访问外部类的JTextArea?您的嵌套类是静态嵌套类: private static class GetBinaryThread extends Thread 因此,它没有封闭实例 去掉static,它将成为一个内部类,引用ClientP

我有这些类及其嵌套类(请转到相关行):

编译器在第行给了我一个错误:

ClientPanel.this.textArea.append(", recieved" + data);
在作用域中无法访问类型为
Client.ClientPanel
的封闭实例

如何访问外部类的JTextArea?

您的嵌套类是静态嵌套类:

private static class GetBinaryThread extends Thread
因此,它没有封闭实例


去掉
static
,它将成为一个内部类,引用
ClientPanel
的实例。请注意,当您创建
GetBinaryThread
的实例时(您在显示的代码中没有该实例)您需要有一个
ClientPanel
引用,以作为上下文隐式地传递给构造函数。

重新打开,原因是另一个问题没有完整的例子,我们可以肯定地告诉您这里出了什么问题,另一个问题没有说明这一点。@durron597的可能重复项:重复项在哪里表明OP的嵌套类声明为
static
,这就是问题所在?除非有人指出,否则很容易忽视。我认为,将另一个问题作为这个问题的副本来结束会更有用,因为这个问题提供了更多的上下文。@durron597:我同意这里的代码比理想的要多,但这并没有太多需要排序(116行)-我看到了更糟的问题,问题还包括错误消息和它发生的位置。比太少的代码要好得多,就像另一个问题中的情况一样。我相信您已经看到了更糟糕的情况。我删除了很多垃圾和一些更明显的挥杆错误。
private static class GetBinaryThread extends Thread