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

非静态嵌套线程-从另一个类(Java)访问,java,blackberry-jde,Java,Blackberry Jde,我在另一个类中创建线程对象时遇到了一些问题(它是被定义的) 它是这样嵌套的: public final class Sculpture extends UiApplication { final class ScreenThread extends Thread { //thread I want to access } } 所以在我的另一个类中,我想创建thread对象,所以我尝试了 Sculpture.ScreenThread test

我在另一个类中创建线程对象时遇到了一些问题(它是被定义的)

它是这样嵌套的:

public final class Sculpture extends UiApplication
{  
     final class ScreenThread extends Thread
     {
        //thread I want to access
     }
}  
所以在我的另一个类中,我想创建thread对象,所以我尝试了

Sculpture.ScreenThread test = (new Sculpture).new ScreenThread();
-这个错误(在BlackBerryEclipse插件中)说“没有雕刻类型的封闭实例是可访问的。”

就我所知,我不能取消嵌套,因为它会导致很多代码无法工作(我假设它依赖于UiApplication),出于同样的原因,我也不能使它成为静态的

知道我做错了什么吗


谢谢。

你不是在创作你的
雕塑。调用应类似于
新建雕塑()。新建ScreenThread()

您没有创建
雕塑。调用应该类似于
new sculpt()。new ScreenThread()

看起来您只是忘记了
new sculpt

之后的()看起来您只是忘记了
new sculpt

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

ScreenThread screenThread = new Sculpture().new ScreenThread();
如果不需要访问外部类上下文,则可能需要定义嵌套类:

public final class Sculpture extends UiApplication {  
     static final class ScreenThread extends Thread {
        //thread I want to access
     }
}  
然后,您可以“正常”导入和实例化该类(即,无需首先创建外部包含类的实例):


最后一点注意,将
线程划分为子类通常是不好的做法。更好的做法是实现Runnable。

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

ScreenThread screenThread = new Sculpture().new ScreenThread();
如果不需要访问外部类上下文,则可能需要定义嵌套类:

public final class Sculpture extends UiApplication {  
     static final class ScreenThread extends Thread {
        //thread I want to access
     }
}  
然后,您可以“正常”导入和实例化该类(即,无需首先创建外部包含类的实例):

最后一点注意,将
线程划分为子类通常是不好的做法。更好的做法是实现Runnable