gpt4 book ai didi

java - 创建类和接口(interface)的数组列表

转载 作者:行者123 更新时间:2023-12-02 00:56:32 27 4
gpt4 key购买 nike

我正在尝试创建一个ArrayList(显然是java),其类型为TileEntity(是的,这是一个minecraft mod)。但我还需要添加到 ArrayList 中的对象来实现某个接口(interface)。

我想到的第一个选项是创建实现接口(interface)的 TileEntity 的抽象子类,并将其用作 ArrayList 类型。但考虑到人们通常会创建自己的 TileEntity 子类,并将它们用作他们通常子类的类,而且我希望人们能够连接到我的 mod,我不能指望他们除了 TileEntity 之外的任何子类。

我当前的解决方案是在添加之前检查if(object instanceof MyInterface),但这看起来很难看。当然有一种方法可以设置 ArrayList 的类型,以要求对象既是 TileEntity 的子类,又是 MyInterface 的实现者。

最佳答案

您可以将使用 ArrayList 的方法或类设为通用。例如,一个通用方法:

public <T extends TileEntity & MyInterface> void doStuffWith(T obj) {
List<T> yourList = new ArrayList<T>();
yourList.add(obj);
...//more processing
}

还有一个泛型类:

public class ArrayListProcessor<T extends TileEntity & MyInterface> {
List<T> theList;

public void processList(T obj) {
theList.add(obj);
...
}

public void someOtherMethod() {
T listElem = theList.get(0);
listElem.callMethodFromTileEntity();//no need to cast
listElen.callMethodFromMyInterface();//no need to cast
}
}

...//somewherein your code
//SomeObj extends TileEntity and implements MyInterface
ArrayListProcessor<SomeObj> proc = new ArrayListProcessor<SomeObj>();

关于java - 创建类和接口(interface)的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15774596/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com