如何创建通用接口方法?

时间:2011-11-02 01:35:20

标签: java generics interface delegation

是否可以在接口中创建通用方法?

说我想创建一个界面

public interface Merge {
    public void merge(Object host, Object other);
}

然后我希望实现类实现它,但是定义主机和其他类型。

e.g。

public class FooBazMerge implements Merge {
    public void merge(Foo host, Baz other){
        // merge some properties
    }
}

我想这样做的原因是我可以做这样的事情

public class SomeObject {
    private Merge merge;
    private Foo foo;
    private Baz baz;        

    public setMerge(Merge merge){
        this.merge = merge
    }

    public void merge(SomeObject anotherObject){
        merge.merge(this.foo, anotherObject.getBaz()); 
    }
}

我基本上想要将someObject的合并责任/逻辑委托给FooBazMerge。这样我就可以改变它的合并方式的实现,而不必在每次需要进行调整时都使用域模型。

3 个答案:

答案 0 :(得分:3)

public interface Merge<A,B> {
    public void merge(A host, B other);
}

这是你要找的?这是有效的语法。您的实现类看起来像:

public class FooBazMerge implements Merge<Foo, Baz> {
    public void merge(Foo host, Baz other){
        // merge some properties
    }
}

答案 1 :(得分:3)

看起来你想要像...这样的东西。

public interface Merge<T,S> {
    public void merge(T host, S other);
}

答案 2 :(得分:1)

查看此页面,了解通用接口实现的优秀示例。 这应该有助于如何实现一个。

http://www.java2s.com/Code/Java/Language-Basics/Agenericinterfaceexample.htm