gpt4 book ai didi

java - 返回接口(interface)对象的列表

转载 作者:行者123 更新时间:2023-12-02 08:18:48 25 4
gpt4 key购买 nike

我有课Category实现接口(interface)CategoryManager 。接下来是Card维持 List<Category> .

现在我想返回此列表,但类别为 CategoryManager ,因此List<CategoryManager> 。我这样做的原因是 Category 的“公共(public)接口(interface)”非常难看,我想通过仅向外部用户显示干净的 CategoryManager 来缩小范围。 .

我该怎么做?

我想出了以下方法:

public <T extends CategoryManager> List<T> getAllCategories() {
return (List<T>) categories; //with categories beeing List<Category>

}

它确实有效,但我发现它相当难看,因为我正在转换并返回 List<T>在这里,从而丢失信息......好吧,我想你会同意,由于各种原因,它并不漂亮。

有人能提供更好/更好的解决方案吗?

问候:-)

最佳答案

这一点与 .NET 示例中的情况相同。您不应该在集合类型之间进行转换。它之所以有效,是因为 Java 的 erasure 。如果你没有收到 Actor 的警告,我会有点惊讶。

最准确的选项是:

public List<? extends CategoryManager> getAllCategories()
{
return categories;
}

负面的是List<CategoryManager>List<? extends CategoryManager> 不同。但是,它确实符合方法名称的建议意图。

关于java - 返回接口(interface)对象的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5861295/

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