2017-09-29 6 views
0

를 사용하는 방법은 두 가지 유형에 대해 하나의 방법을 사용하고 싶습니다와 나는이 같은 시도 :일반적인 함수 매개 변수

private <T extends Base> boolean isNeeded(String name, T receivedItem) { 
    Base item = null; 
    if (receivedRequest.getClass().equals(Derived1.class)) { 
     item = (Derived1) receivedItem; 
    } else if (request.getClass().equals(Derived2.class)) { 
     item = (Derived2) receivedItem; 
    } 
    callMethodDoSomething(item.getData().getSpecificData()); 
} 

하지만 난 단지 파생 클래스에있는 메소드를 호출하는 방법을 모르겠어요. 가장 최선의 방법은 무엇입니까?

+0

실제 문제가 무엇인지 이해하기 다소 어렵다 (또한 사용되지 않기 때문에 '이름'매개 변수를 생략) 왜 그냥

boolean isNeeded(Base base) { return callMethodDoSomething(base.getData().getSpecificData()); } 

그것은 것 실제로 자식 클래스 (클래스) 메서드를 호출하고 컴파일하지 못하는 코드를 제공하면 상황이 개선됩니다. 이 전화는 각 캐스팅 직후에 각각''''if'' 블록 내부에 있어야합니다. ''''''''''''''''Derived2''를 확장하는지 여부에 상관없이'''callMethodDoSomething''은 아이템이 받게 될 일반적인 대우입니까? –

+0

두 개의'''(Derived?)'' '쓸모가 없다. –

답변

1

과부하가 발생하는 이유는 다음과 같습니다.

boolean isNeeded(String name, Derived1 item) { 
    return callMethodDoSomething(
     item.getData().getSpecificData()); 
} 

boolean isNeeded(String name, Derived2 item) { 
    return callMethodDoSomething(
     item.getData().getSpecificData()); 
} 
1

...