2012-01-05 3 views

답변

1

아니요. 유형 정의가 "여러 유형"에 대해 선언 될 수있는 유일한 방법은 해당 유형이 상속 계층 구조에서 공통 조상을 공유하거나 동일한 인터페이스를 구현하는 경우입니다. NumberString은 모두 Object이며 Serializable을 구현합니다.하지만 공통점은 같습니다.

게다가, 귀하의 예에서는 제네릭 형식의 사용이 무엇입니까? 메서드는 매개 변수를받지 못하고 아무 것도 반환하지 않습니다. 아마 당신은이처럼 print 방법에 과부하가 더 낫다 :

void print(String s) {} 
void print(Number n) {} 
+3

여기서 도움이되지는 않지만, 실제로는 타입 파라미터에서 원하는만큼의 인터페이스를 선언 할 수 있습니다 :'T extends ClassFoo & InterfaceA & InterfaceB'. 이 경우,'T'는 ClassFoo, InterfaceA * 및 * InterfaceB의 부속 유형이어야하며 ClassFoo가 삭제됩니다. – yshavit

2

더 나은 솔루션이 오버로드 된 메서드를하는 것입니다 :이 도움이

T void print(<T extends Number> number) {} 

void print(String s) {} 

희망을.

+0

정말 고마워! 나는 이것에 대해 생각해 보았고 같은 방법을 두 번 쓰고 싶지는 않았다.) –

+0

@HelenHambaryan, 천만에! – Egor

관련 문제