Нестатический вложенный поток - доступ из другого класса (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), я также не могу сделать его статическим по той же причине.
Есть идеи, что я делаю не так?
Благодарю.
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.
Вы не создаете свой Sculpture
, Звонок должен выглядеть так new Sculpture().new ScreenThread()
,