gpt4 book ai didi

java - 如何验证特定的子类?

转载 作者:行者123 更新时间:2023-11-30 12:02:42 24 4
gpt4 key购买 nike

我有一个基类:“工作项”。 Witch 由 3 个子类扩展:“Bug”、“Story”、“Feedback”。我从控制台 (String) 收到一条命令,列出所有类型的工作项,或一种特定类型(错误、故事、反馈)。我有一个 WorkingItems 类型的集合,其中包含上述所有 3 个子类。如果当前对象是错误、故事或反馈(我不能使用 instanceof),我如何在循环集合时进行验证?

我不想将工作项的集合分成 3 个较小的错误、故事、反馈集合。

private String listAllWorkingItems(StringBuilder result) {
WIMRepository.getWorkItemList().forEach(workItem -> result.append(workItem.toString()));
return result.toString();
}

private String listAllStories(StringBuilder result) {
WIMRepository.getWorkItemList(); //TODO
return result.toString();
}

private String listAllBugs(StringBuilder result) {
WIMRepository.getWorkItemList() //TODO
return result.toString();
}

private String listAllFeedbacks(StringBuilder result) {
WIMRepository.getWorkItemList() //TODO
return result.toString();
}

结果应该是这样的:

命令:显示全部结果:“正在打印工作项集合”

命令:显示错误结果:“仅打印工作项集合中的错误”

最佳答案

如果我错了请纠正我,但我认为拥有 3 个子类没有任何意义。

enum WorkingItemType {
BUG, STORY, FEEDBACK;
}
class WorkingItem {
private WorkingItemType type;

public WorkingItemType getType() {
return type;
}
}

您没有说明为什么选择这种方式,我假设两个类(WorkingItemWorkingItemType)就足够了,这将使方法 listAllBugs 就这么简单

WIMRepository.getWorkItemList().stream()
.filter(i -> WorkingItemType.BUG.equals(i.getType()))
.forEach(i -> result.append(i.toString()));

此外,一个通用的方法就足够了。

WIMRepository.getWorkItemList().stream()
.filter(i -> WorkingItemType.valueOf(input.toUpperCase()).equals(i.getType()))
.forEach(i -> result.append(i.toString()));

instanceof 很少是一个好的选择,所以要求禁止它很好。

关于java - 如何验证特定的子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58353916/

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