2013-09-05 2 views
3

나는 자바 일반 유형을 공부하고 있습니다.자바 일반 유형 대 매개 변수에 대한 추상 클래스 대

나는 AbstractInputdata 클래스를 가지고있다. 연장

public abstract class AbstractInputData { 
.... 
} 

일부 클래스 AbstractInputData

public class Email extends AbstractInputData{ 
... 
} 
public class Mobile extends AbstractInputData{ 
... 
} 
...... 

A.

public class ProcessorA { 
public static boolean isCustomData(AbstractInputData abstractInputData) { 
.... 
} 
} 

B.

public class ProcessorB { 
public static <T extends AbstractInputData> boolean isCustomData(T t) { 
... 
} 
} 

A와 B 사이의 차이가 있습니까?

+0

http://www.ntu.edu.sg/home/ehchua/programming/java/JavaGeneric.html ( –

답변

5

유일한 차이점은 Reflections를 통해 제네릭 형식 메서드로 나타나는 두 번째 방법이 있다는 것입니다. 이 동작은 당신은 당신이 유용 이럴하지 않은, 그것은 일치 할 것으로 예상 유형을 말할 것이

processorB.<MyType>isCustomData(t); // won't compile unless t is a MyType 

같은 이상한 경우를 제외하고 동일합니다입니다.

+1

일반을 이해하는 데 도움이 될 수 있음) @SayemAhmed Generics는 약 9 년이되었으며 여전히 혼란 스럽습니다. 얼마나 람다가 혼란 스러울 지 상상해보십시오 : P –

2

메소드가 부울 만 생성하므로 차이가 없습니다. processorB 이메일 또는 모바일 매개 변수 유형에 따라 반환 동안

public class ProcessorB { 
    public static <T extends AbstractInputData> boolean isCustomData(T t) { 
    ... 
    } 
    public static <T extends AbstractInputData> T copyCustomData(T t) { 
    ... 
    } 
} 

ProcessorA는 유형 AbstractInputData의 객체를 반환 할 수 :하지만 경우에 당신은 당신이 제네릭 형식을 유지하기 위해 B를 사용하여 입력을 반환합니다.

+0

"+1"Thanks @TomWolk –

+0

+1. 감사. 몇 가지 사례를 테스트 한 후 마침내 얻었습니다. @ 톰웍 –