1

これは結構見かけますが、

オブジェクトを返すメソッド、つまり

public Object getGroup(int groupPosition) 
{       
    return groups.get(groupPosition);
}

次に、この関数が呼び出されると、返されたオブジェクトが特定のクラスにキャストされます。

ExpandListGroup group = (ExpandListGroup) getGroup (groupPosition);

プレーン オブジェクトが返された場合、そのオブジェクトのクラス (TestClass) を知っていて、事前に宣言されたオブジェクト (X) をその返されたオブジェクト (Y) に設定したい場合は、対応するクラスをキャストする必要があるようです。の形で..

TestClass X = (TestClass) returnsY();

これは正しいです?オブジェクトをクラスとしてキャストすることの他の深い意味/結果はありますか?

乾杯

4

2 に答える 2

3

すべての参照は、参照またはそのサブタイプと同じタイプのオブジェクトを保持する必要があります。コンパイラはそれだけを知っているので、Objectを参照に割り当てることはできません(ObjectはgetGroupTestClassが持っているすべてのメソッドを実装していない可能性があります)。この問題を解決するには、によって返されるオブジェクトもキャストすることでクラスであることをコンパイラに明示的に伝える必要があります。ObjectTestClassgetGroupTestClass

于 2012-12-17T11:44:14.560 に答える
1

これは、TestClass のメソッドを呼び出せるようにするために行われます。ただし、以前のチェック (オブジェクトが実際に TestClass のインスタンスであることを確認するため) がない場合は、ClassCast 例外が発生します。

于 2012-12-17T11:37:44.370 に答える