这是基本场景:一个方法返回一个 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();