Нестатический вложенный поток - доступ из другого класса (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.

Похоже, вы просто забыли () после new Sculpture?

Вы не создаете свой Sculpture, Звонок должен выглядеть так new Sculpture().new ScreenThread(),

Другие вопросы по тегам