使用泛型作为参数重载接口中的方法

时间:2014-04-20 15:22:39

标签: java generics interface overloading

我有一个Java接口A定义了一个方法,它将另一个接口B作为参数。 我想知道是否可以在实现类中重载该方法,以作为参数提供实现接口B的对象。 这是我的意思的示例代码:

public interface SampleInterfaceA{
    public void sampleMethod(SampleInterfaceB b);
}

public class ClassB implements SampleInterfaceB{}
public class ClassC implements SampleInterfaceB{}

public class SampleClassA implements SampleInterfaceA{
    @Override
    public void sampleMethod(ClassB b){}
}

public class SampleClassB implements SampleInterfaceA{
    @Override
    public void sampleMethod(ClassC c){}
}

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果你尝试一下,你会发现编译器认为SampleClassASampleClassB缺少实施SampleInterfaceA所需的内容。

您需要实现界面中定义的实际方法。

获得大概你想要的东西的方法是使用泛型:

public interface SampleInterfaceA <T extends SampleInterfaceB>{
    public void sampleMethod(T b);
}

public class SampleClassA implements SampleInterfaceA<ClassB>{
    public void sampleMethod(ClassB b){}
}

public class SampleClassB implements SampleInterfaceA<ClassC>{
    public void sampleMethod(ClassC c){}
}