gpt4 book ai didi

java - 使用泛型将类类型从一个方法传递到另一个方法

转载 作者:行者123 更新时间:2023-12-01 09:27:32 24 4
gpt4 key购买 nike

在我当前正在编写的游戏中,我有一个列表 Collectable我的库存中的对象。当我激活这些对象之一时,有些对象需要另一个 Collectable现在,在我的 UI 中,我显示了所有可能的候选对象 Collectable原始对象可能处理的对象。为此,我检查对象是否是接口(interface)的实例。但是该接口(interface)因对象而异。此 UI 称为 ItemSelector并由主 UI 调用。

我构造了ItemSelector通过使构造函数采用 class<T> selectionCriteria作为参数。

<T> ItemSelector(Class<T> selectionCriteria){
// ... Do work.
}

但是,这意味着当我创建此类的对象时,我必须专门对 switch case 中可能存在的所有不同可能接口(interface)进行硬编码。根据原始对象的类型进行声明。我想做的是在 Collectable 的每个中都有一个方法对象(Collectable 接口(interface)将有一个 getSelectionCriteriaInterface() 方法,该方法将被具体类覆盖),该方法将返回用作选择标准的接口(interface)。

我该如何实现这一目标。希望尽快得到答复,谢谢。

最佳答案

像这样:

interface Collectable {
...
Class<?> getSelectionCriteriaInterface();
}

可能的实现:

public Class<?> getSelectionCriteriaInterface() {
return MyInterface.class;
}

然后在检查时,类似:

Collection<Collectable> allItems = ...;
Collectable c = ...;

List<Collectable> filtered = allItems.stream()
.filter(c.getSelectionCriteriaInterface()::isInstance)
.collect(Collectors.toList());

关于java - 使用泛型将类类型从一个方法传递到另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39722918/

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