【问题标题】:Using extra methods when implementing an interface实现接口时使用额外的方法
【发布时间】:2014-01-07 23:58:32
【问题描述】:

我已经使用泛型创建了一个涵盖所有类的接口,但是我需要为一个实现该接口的类提供额外的方法。

我希望能够使用将变量声明为接口的动态绑定,然后使用其中一个类对其进行初始化。这样我的方法可以更容易实现。

然而,它让一个人变得棘手。试着简单总结一下程序,我有一个界面:

DataType<T>
{
    public T getParameter();
    public void setParameter(T value);
}

实现这种类型的类有:

StringData implements DataType<String>
IntData implements DataType<Int>
BooleanData implemets DataType<Boolean>
DoubleData implements DataType<Double>

还有一个我想有其他方法的;

ArrayData implements DataType<ArrayList<DataType>>

ArrayData 类包含其他数据类型的 ArrayList。所以我想要添加、删除和获取 DataType 到列表的其他方法。

但是,在使用上述动态绑定技术时无法调用这些方法,因为不是所有的 DataType 变量,所以我想知道是否有人知道解决这个问题的方法,或者我错过了什么。谢谢。

【问题讨论】:

    标签: java class interface implements dynamic-binding


    【解决方案1】:

    正如您所说,您提出的方法对于接口来说不够通用,因此在顶级接口中添加/删除方法是没有意义的。

    考虑 2 个接口,一个具有基本数据操作,一个具有列表操作。

    public interface ListDataType extends DataType<List<DataType>> {
      // list operations
    }
    

    【讨论】:

    • 啊,好主意,我还能说:DataType array = new ArrayData()?我有一个类:类 ArrayData 实现 ListDataType
    • 是的,因为 ListDataType 扩展了 DataType。
    • 啊,完美,我忘了你可以扩展接口!谢谢!!
    猜你喜欢
    • 2014-04-17
    • 2017-11-29
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2019-01-08
    • 1970-01-01
    相关资源
    最近更新 更多