0

別のクラス(定義されている)でスレッドオブジェクトを作成するのに問題があります。

次のようにネストされます。

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に依存していると思います)、これをネスト解除できないと言える限り、同じ理由で静的にすることもできません。

私が間違っていることについて何か考えはありますか?

ありがとう。

4

3 に答える 3

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 を実装することをお勧めします。

于 2012-04-22T17:13:02.317 に答える
1

あなたはあなたのを作成していませんSculpture。呼び出しはのようになりますnew Sculpture().new ScreenThread()

于 2012-04-22T17:04:11.447 に答える
1

後に()を忘れたように見えますnew Sculptureか?

于 2012-04-22T17:05:08.167 に答える