intellij를 사용하는 AndroidStudio에서 내 코드에서 다음과 같은 제안을 받고 있습니다. 나는 왜이 제안이 이루어지고 있는지 궁금해했다.`instanceof` 테스트는 중복되어`! = null`로 대체 될 수 있습니까?
ParentB
을 상속하고 ParentB
을 상속하는 Child
클래스가 여러 개 있습니다. 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 {
}
나는 다음과 같은 제안을받을 조건을 테스트하고 경우 :
그래서 나는 다음 있습니다. Condition "myChild instanceof ChildA" is redundant and can be replaced with "!=null"
.
왜 나는 그 제안을 받고 있습니까? 제안이 정확합니까?
편집.
조건 앞에 메서드를 추가했습니다. 메소드를 주석 처리 한 후 제안을 제거합니다. 그것은 이미 그것을 ChildA
으로 던지려고 시도했기 때문에 그곳에서 실패했을 것입니다. 그래서 ide는 단지 그것이 통과한다고 가정하고 그 후에 null을 확인할 수 있다고 말합니까?
감사
문제를 설명하는 짧은 예를 보여 주면 도움이 될 것입니다. 눈에 보이는 것보다 더 많은 것이 있다고 생각합니다. –
예는 여전히 _complete_가 아닙니다. 'ChildB'가 누락되었거나 if 블록에서 수행중인 작업입니다. – Thomas
우리가 정보가 부족하기 때문에 여기에 맞춰보세요 :'Child'의 _ 하위 서브 클래스를 검사하고 IDE 내에서 동일한 작업을 항상 수행한다면 _only way_는 'doSomething'이 아니라 'myChild null이었다. – Thomas