0

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

它是这样嵌套的:

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),出于同样的原因,我也不能将其设为静态。

任何想法我做错了什么?

谢谢。

4

3 回答 3

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 是更好的做法。

于 2012-04-22T17:13:02.317 回答
1

你不是在创建你的Sculpture. 呼叫应如下所示new Sculpture().new ScreenThread()

于 2012-04-22T17:04:11.447 回答
1

看起来你只是忘记了 () 之后new Sculpture

于 2012-04-22T17:05:08.167 回答