2012-09-03 118 views
1

如何为接口定义泛型返回类型,以便它的实现类可以拥有自己的返回类型?如何在方法接口中返回泛型类型

public interface A { 
    public <T> T doSomething();  
} 


public class ImplA implements A { 
    public SomethingElseA doSomething() { 
     return obj.doSomething(); 
    } 
} 

public class ImplB implements A { 
    public SomethingElseB doSomething() { 
     return obj.doSomething(); 
    } 
} 
+0

'do'不是有效的标识符。 – oldrinb

+0

编辑为'doSomething' – humansg

+0

现在应该没问题吧? – MaVRoSCy

回答

5

请尝试如下。

interface A<T> { 

    T doSomething(); 
} 

class ImplA implements A<SomethingElseA> { 

    public SomethingElseA doSomething() { 
    ... 
    } 
} 

class ImplB implements A<SomethingElseB> { 

    public SomethingElseB doSomething() { 
    ... 
    } 
} 
1

我猜你的意思是这样吗?我将do()更改为foo(),因为它是保留字...

public interface A<T> { 
    public T foo();  
} 

public class ImplA implements A<SomethingElseA> { 
    @Override 
    public SomethingElseA foo() { 
     return obj.doSomething(); 
    } 
} 

public class ImplB implements A<SomethingElseB> { 
    @Override 
    public SomethingElseB foo() { 
     return obj.doSomething(); 
    } 
}