JAVA의 제네릭에 매달려있는 매우 일반적인 유스 케이스가 있는데 어떻게 사용할 수 없는지 집중하지 못합니다.구현에서 일반 유형의 인터페이스에서 일반 유형
다음 예제는 인터페이스에서 일반 유형을 생성하여 구현 방법과 함께 제네릭 유형으로 추가 전달할 수 없음을 보여줍니다.
interface MyInterface <T, I, O>
{
public T method(T arg);
}
abstract class MyAbstractClass <I , O> implements MyInterface<List<?>, I , O>
{
// This cause a syntax-failure! What is wrong with this?
// And how can I manage my Generics like this?
@override
public abstract List<O> method(List<I> arg);
}
class MyImplementation extends MyAbstractClass <String , Integer>
{
List<String> method(List<Integer> arg)
{
// ... implementation
}
}
먼저, 인터페이스가 다른 2 종류를 사용하지 않습니다. 둘째, List >을 MyInterface에 전달하고 My 추상 클래스에서 List 및 List 을 각각 사용합니다. 잘못된 것입니다. O 또는 I 등 어느 곳에서나 동일한 유형을 사용해야합니다. –
Justas