상기 <> (S)의 내부 식별자 ItemProcessor 제네릭을 사용하는 것을 나타낸다.
두 번째 코드 예제는 전혀 컴파일되지 않습니다. 인터페이스 정의에서 I & O가 누락되면 "프로세스"메소드 선언에 해당 요소가있어 컴파일 오류가 발생합니다. 당신이 ItemProcessor의 인스턴스를 만들 때
, 당신과 같이 그 일반적인 자리에 구체적인 클래스를 제공 할 것입니다 :
이
ItemProcessor<String, Integer> processor = new ConcreteItemProcessor<String, Integer>();
Integer result = processor.process("hello world");
또는 가능성, 당신이 실제로 ItemProcessor < 문자열, 정수의 구현으로 ConcreteItemProcessor를 선언 할 것 그 클래스 정의에 >, 인스턴스화가 조금 짧아 질 수 있도록 : 당신은 문자열과 정수에 시도의 프로세서와 같은 프로세서를 선언하기 때문에
ItemProcessor<String, Integer> processor = new ConcreteItemProcessor();
다른 종류의 객체를 사용하면 컴파일 오류가 발생합니다. 당신이 원하는! 제네릭이 나오기 전에 진정한 "일반적인"인터페이스를 만들 수있는 유일한 방법은 ItemProcessor를 프로세스로 만들고 "Objects"또는 유사한 것을 반환하는 것입니다. 그러면 컴파일 될 것이지만 우연히 잘못된 것을 전달한 경우 런타임 오류가 발생할 수 있습니다. 이 방법을 사용하면 오류를 더 빠르게 catch 할 수 있지만 코드를 좀 더 장황하게 만들어야합니다.
일반 인터페이스입니다. 이에 대한 자세한 내용은 [여기] (http://docs.oracle.com/javase/tutorial/java/generics/)에서 시작하십시오. –
감사합니다. – Serge