【问题标题】:How to create generic interface methods?如何创建通用接口方法?
【发布时间】:2011-12-19 23:11:36
【问题描述】:

是否可以在接口中创建泛型方法?

说我想创建一个界面

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

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

例如

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。这样我就可以更改其合并方式的实现,而不必在每次需要进行调整时都与域模型混为一谈。

【问题讨论】:

    标签: java generics interface delegation


    【解决方案1】:
    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
        }
    }
    

    【讨论】:

    • 啊!你们太棒了!那就是我做错了。当我做公共类 FooBazMerge 实现 Merge 时,公共类 FooBazMerge 实现了 Merge ..现在我回头看我不知道我在想什么。谢谢艾西瓦娅!
    【解决方案2】:

    您似乎想要...

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

    【讨论】:

      【解决方案3】:

      查看此页面以获取通用接口实现的好示例。 这应该有助于如何实施。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多