1

これが基本的なシナリオです。メソッドは型 A のクラスを返しますが、コードの内部動作を調べた後、実際には B (A のサブクラス) を返すと想定しても安全であることがわかります。このようなことをすることは有効ですか?または、(少なくとも)保護されたデータにアクセスしているため、それを強く思いとどまらせますか?

メソッドを実装するこのコードも維持しないと仮定します。つまり、ソフトウェアは、この (十分に確立された) メソッドの別の実装で出荷される可能性があります。

回答は徹底してください。

A returnedData = executeMethod();
if(returnedData instanceof B)
{
    ((B)returnedData).someFunctionNotExposedThroughAIsItProtected();
    //Use it as B, safe but non OOP and accessing protected functionality?
}else
    writeAFallBackOfSomeSort();
4

2 に答える 2