非静态嵌套线程 - 从另一个类(Java)访问
问题描述:
我在创建另一个类(定义它)的线程对象时遇到了一些麻烦;非静态嵌套线程 - 从另一个类(Java)访问
它嵌套像这样:
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),我也不能因为相同的原因使它静态。
任何想法我做错了什么?
谢谢。
答
在你当前的代码定义需要外的一个实例内部类,包含以类实例化:
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更好。
答
您并未创建您的Sculpture
。电话应该看起来像new Sculpture().new ScreenThread()
。
答
看起来你只是忘记了()后new Sculpture
?