これが基本的なシナリオです。メソッドは型 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();