在使用IntelliJ的AndroidStudio中,我的代码出现了以下建议。我想知道为什么会出现这个建议。
我有多个继承自ParentB的Child类和ParentB又继承自ParentA。
我需要测试哪一个ParentB的子类。假设我有4个子类:ChildA,ChildB,ChildC和ChildD。所有这些子类都继承自Child。
因此我有以下代码:
我有多个继承自ParentB的Child类和ParentB又继承自ParentA。
我需要测试哪一个ParentB的子类。假设我有4个子类:ChildA,ChildB,ChildC和ChildD。所有这些子类都继承自Child。
因此我有以下代码:
public void test(Child myChild) {
anotherTest((ChildA)myChild);
if (myChild instanceof ChildA) {
//dosomething
} else if(myChild instanceof ChildB) {
//dosomething
}
}
public void anotherTest(ChildA theChild) {
//dosomething
}
public ParentB extends ParentA {
}
public Child extends ParentB {
}
public ChildA extends Child {
}
当我测试这个条件时,我得到了以下建议:条件"myChild instanceof ChildA"是多余的,可以用"!= null"替换
。
为什么会出现这样的建议?这个建议准确吗?
编辑。
我在条件之前添加了这个方法。在注释掉这个方法后建议消失了。这是因为它已经尝试将其转换为ChildA
,并且在那里失败了吗?因此,IDE 假设它已经通过并说您可以在那之后检查 null 吗?
谢谢
ChildB
或者在if块中你正在做什么。 - ThomasChild
的所有子类并且始终在块内执行相同的操作,则IDE可能会发现“不执行某些操作”的唯一方法是如果myChild
为空。 - Thomas