0

誰かが私のためにクラスキャストについて何か説明できるかどうか疑問に思っています.

私は Android で遊んでいて、ExApp という名前のアプリケーションのサブクラスがあります。

アクティビティの 1 つから ExApp のメソッドを呼び出したいので、次のようにします。

ExApp ex = ((ExApp)getapplication());

私が理解していないのは、なぜ二重の括弧が必要なのですか? なぜ私はできないのですか:

ExApp ex = (ExApp)getApplication();  

?

ありがとう。

4

1 に答える 1

8

あなたはできる。2 つのステートメントはまったく同じです。

違いが見られるのは、結果に対してメソッドを呼び出していた場合です。

(ExApp) getApplication().foo();

は次のものとは異なります。

((ExApp) getApplication()).foo();

最初のケースでは、その結果がfoo()にキャストされExAppます。2 番目は の結果でExAppあり、式全体は の戻り値の型ですfoo()

于 2011-05-29T07:31:33.880 に答える