2012-04-22 3 views
0

У меня возникли проблемы с созданием объекта потока в другом классе (которому он определен);Нестатический вложенный поток - доступ из другого класса (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) говоря: «Не заключая экземпляр типа скульптуры не доступен.»

Насколько я могу судить, я не могу разблокировать это, потому что это приводит к тому, что много кода не работает (я полагаю, он полагается на 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.

1

Вы не являетесь Вашим Sculpture. Вызов должен выглядеть так: new Sculpture().new ScreenThread().

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^