gpt4 book ai didi

java - 列出用法而不指定类型

转载 作者:行者123 更新时间:2023-12-01 22:47:29 25 4
gpt4 key购买 nike

我在新环境中看到了一段代码。如下:

List results;

if (<Some Condition>) {
results = List<XYZ> results;
} else {
results = List<ABC> results;
}

XYZABC 是 Hibernate 实体。虽然这可行,但我想这不是执行此操作的正确方法。

我想知道什么是更好的方法。我知道没有“完美”的方法来做到这一点。但这可以更好。

记住这些是不相似的实体。所以我认为用接口(interface)包装这些实体可能不是一个好主意。

最佳答案

泛型是一种编译时机制,因此,如果您不知道要拉取的对象的类型,则泛型不合适。

我知道实体是不同的并且不相关,但我不明白为什么界面不是一个好主意。基本上,您知道您想要根据某些条件收集一些数据。因此,仅考虑 XYZ 和 ABC 是收集数据类型的候选者这一事实,您确实有一些共同点。在这种情况下,您可能会遇到

List<? extends CommonInterface> 

CommonInterface 就在这里使用。

但是,假设 XYZ 和 ABC 完全不同,另一种选择可能是将方法分为两部分,并使用通用方法来接收您想要收集的数据类型:

public void methodForTheCondition() {
if (<some condition>) {
List<XYZ> l = genericMethod(XYZ.class);
// do something
} else {
List<ABC> l = genericMethod(ABC.class);
// do something else, which I assume is different, otherwise opt for
// a common interface
}
}

public <T> List<T> genericMethod(Class<T> clazz) {
List<T> result = new ArrayList<T>();
return result;
}

关于java - 列出用法而不指定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25128155/

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