繁体   English   中英

java-尝试使用/转换接口以用于/代替抽象类

[英]java- trying to use/convert interface for use with/in place of an abstract class

我想使用一个Java库代替ArrayLists ...该库(“ Vanilla Java Collections”)需要以以下方式声明接口:

interface MutableBoolean {
    public void setFlag(boolean b);
    public boolean getFlag();
}

这是声明此列表的方式-

// create a huge array of MutableBoolean
HugeArrayList<MutableBoolean> hugeList = new HugeArrayBuilder<MutableBoolean>() {}.create();
List<MutableBoolean> list = hugeList;

这就是检索数据的方式-

for (MutableTypes mb : list) {
boolean b1 = mb.getBoolean();

同一接口内可以有多种数据类型来插入/检索字符串,整数,双精度等值...

现在,在我正在处理的应用程序中,有一个自定义变量定义-

public abstract class Variable implements MutableVariable  {

    abstract public byte[] toBinary();
    abstract public byte[] toBinary(String charset);
    abstract public String toString();
    abstract public String toString(String charset);
    abstract public List toList();
    abstract public boolean isEmpty();
    abstract public Object getWrappedObject();
    ----plus some more functions----

还有一个类“ NodeVariable”,它扩展了“ Variable”,另一个类是“ ListVariable”,它实现了变量-每个ListVariable都有一个List以及一些与列表和字符串操作有关的实用程序功能。

我想实现数组替代(“ Vanilla Java Collections”),它需要一个接口来代替“ ListVariable”。 但是“变量”类是抽象类。 所以我很困惑-如何实现该接口,以便可以使用ArrayList Substitute(“ Vanilla Java Collections”)代替“ ListVariable”?

是否可以通过对使用“ ListVariable”的现有代码进行最小的更改(即通过对“ ListVariable”类进行全部/大部分更改)来实现?

如果我正确理解了您的问题,则希望使用一个名为ArayListVariable的类,该类可以在可以使用ListVariable任何地方使用。 在这种情况下,您可以扩展Variable抽象类

public class ArrayListVariable extends Variable
{
  // overrides of required functions
}

或实现MutableVariable接口

public class ArrayListVariable implements MutableVariable
{
  // implementations of required functions
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM