gpt4 book ai didi

java - Java 类的字段可以是多种类型而不使用泛型吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:47:48 25 4
gpt4 key购买 nike

我有一个类,它的实例将被序列化。因此该类实现了 Serializable。该类有一个 List 类型的字段,当然它也必须是 Serializable。想象一下这个类看起来像这样:

import java.io.Serializable;
import java.util.List;

public class Report implements Serializable {

private static final long serialVersionUID = 12345L;

private List<Record> records = new ArrayList<>();
}

现在我知道 ArrayListSerializable,但我宁愿将我的字段声明为某种接口(interface)类型。

当我们的 SonarQube 分析代码时,问题就来了。它提示说,字段 records 也应该是某种 Serializable 类型,而 SonarQube 是正确的。

但由于该字段是一个实现细节(私有(private)成员),我不想在类上使用泛型。

我的问题来了:使用自应用约束来声明某些接口(interface)类型的字段而不使用泛型,是否可以将字段声明为多种(接口(interface))类型?

仅供引用:我知道一个可以转换为多种类型,但那是完全不同的东西。

Object o = (List<Serializable> & Serializable) new ArrayList<Serializable>();

虽然没有必要,但上述内容是完全合法的。

最佳答案

看起来您的字段无论如何都是private,所以它是List 还是ArrayList 并不重要。您可以将该字段设为可序列化的 ArrayList 并在 getter 中使用 List

public class Report implements Serializable {

private ArrayList<Record> records = new ArrayList<>();

...

public List<Record> getRecords() {
return this.records;
}
}

(虽然这不能回答一个字段是否可以有多种类型的问题,但它可能是您实际问题的解决方案。)

关于java - Java 类的字段可以是多种类型而不使用泛型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39412065/

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