非静态嵌套线程 - 从另一个类(Java)访问

时间:2012-04-22 17:00:43

标签: java blackberry-jde

我在另一个类(定义它)中创建一个线程对象时遇到了一些麻烦;

它嵌套如下:

public final class Sculpture extends UiApplication
{  
     final class ScreenThread extends Thread
     {
        //thread I want to access
     }
}  

所以在我的其他类中我想创建线程对象,所以我试试;

Sculpture.ScreenThread test = (new Sculpture).new ScreenThread();

- 此错误(在BlackBerry Eclipse插件中)说“无法访问Sculpture类型的封闭实例。”

据我所知,我无法取消嵌套,因为它导致很多代码无法工作(我认为它依赖于UiApplication),我也不能因为同样的原因而使其静态化。

任何想法我做错了什么?

感谢。

3 个答案:

答案 0 :(得分:3)

在当前代码中,您定义了一个内部类,它需要包含外部的实例,以便实例化:

ScreenThread screenThread = new Sculpture().new ScreenThread();

如果您不需要访问外部类上下文,则可能需要定义嵌套类:

public final class Sculpture extends UiApplication {  
     static final class ScreenThread extends Thread {
        //thread I want to access
     }
}  

然后您可以导入并实例化'正常'(即,不首先创建外部的包含类的实例):

ScreenThread screen = new ScreenThread();

最后一点,对于子类Thread来说,这通常是不好的做法。实现Runnable更好的做法。

答案 1 :(得分:1)

您没有创建Sculpture。通话应该看起来像new Sculpture().new ScreenThread()

答案 2 :(得分:1)

看起来你忘了new Sculpture之后的那个()?