我在另一个类中创建线程对象时遇到了一些问题(它被定义到这个类中);
它的嵌套方式如下:
public final class Sculpture extends UiApplication
{
final class ScreenThread extends Thread
{
//thread I want to access
}
} 所以在我的另一个类中,我想创建线程对象,所以我尝试了;
Sculpture.ScreenThread test = (new Sculpture).new ScreenThread();据我所知,我不能取消嵌套,因为它会导致很多代码无法工作(我假设它依赖于UiApplication),出于同样的原因,我也不能使它成为静态的。
你知道我做错了什么吗?
谢谢。
发布于 2012-04-23 01:13:02
在您当前的代码中,您定义了一个内部类,它需要外部类的实例,包含类才能被实例化:
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-23 01:04:11
您不是在创建Sculpture。调用应该类似于new Sculpture().new ScreenThread()。
发布于 2012-04-23 01:05:08
看起来你只是忘记了new Sculpture之后的()?
https://stackoverflow.com/questions/10270028
复制相似问题