0

私はこのコードを手に入れました:

mBoundService = ((LocalService.LocalBinder)service).getService();

いい人がこれが何を意味するのか説明してもらえますか:((LocalService.LocalBinder)service)そして誰かが((A)B)のような他の例を挙げてください。

ありがとうございました。

4

4 に答える 4

4

キャストしているだけです。これはコンパイラに「この式の値はタイプXとしてしか知らないことは知っていますが、実行時にはタイプYになると思います。実行時に確認してから、そのように使用させてください。 。」

例えば:

 Object x = getValueFromSomewhere();
 String text = (String) x; // I know x is a string reference really
 // Use text as a normal string reference

関連するタイプに対するあなたの信念が正しくない場合(たとえば、の値がではなくxへの参照であった場合)、aがスローされます。IntegerStringClassCastException

詳細については、Java継承チュートリアルを参照してください(または、「Javaキャストチュートリアル」を検索して、類似したものをたくさん見つけてください) 。詳細については、Java言語仕様のセクション15.16を参照してください。

于 2012-05-18T06:02:17.437 に答える
1

変数(サービス)があり、それをタイプ(LocalService.LocalBinder)に変換すると、サービスが得られます。これは、次のことを意味します。

Service service;
LocalBinder binder = (LocalService.LocalBinder) service;
Service mBoundService = binder.getService();

これを試してみてくださいそれはあなたを助けるかもしれません

参照

于 2012-05-18T06:06:34.953 に答える
0

ローカルバインダーは、アクティビティをアプリケーションにのみバインドする必要があることを意味します。サービスは他のアプリケーションにもバインドできることに注意してください。一方、LocalService.LocalBinderを使用すると、サービスを含むアプリケーションをサービスでバインドできます。

于 2012-05-18T06:02:22.637 に答える
0

このステートメントは、「service」変数がタイプLocalService.LocalBinderにキャストされることを意味します。

その他のサンプル:

double a=1.1f;
int i=(int)a;// you can't write int i=a;
于 2012-05-18T06:03:36.543 に答える