实现中具有通用类型的接口的通用类型

时间:2017-03-20 11:30:02

标签: java generics interface abstract

我有一个非常常见的用例悬挂在JAVA中的Generics,我无法关注这是不可能的。

以下示例显示,无法在接口中创建Generic Type,以便在实现方法中将其作为泛型Type传递。

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
     }
}

1 个答案:

答案 0 :(得分:0)

我不确定这是否真的是你想要做的,但这种方式可行:

interface MyInterface <T, I, O>
{
    T method(I arg);
}

abstract class MyAbstractClass <O, I> implements MyInterface<List<O>, List<I> , O>
{
    @Override
    public abstract List<O> method(List<I> arg);
}

class MyImplementation extends MyAbstractClass <String , Integer>
{
    @Override
    public List<String> method(List<Integer> arg) {
        // ... implementation
    }
}