gpt4 book ai didi

java - Java 强制您提供无参数构造函数背后的逻辑是什么?

转载 作者:行者123 更新时间:2023-12-02 01:35:57 31 4
gpt4 key购买 nike

换句话说,如果 Java 编译器提供默认构造函数,即使还有带参数的构造函数,也会出现什么问题?

最佳答案

一般来说,如果没有提供,Java 将提供一个无参数构造函数。

如果您有一个“arg”构造函数并且不尝试使用无参数构造函数(或定义一个),那么您就没有问题。

但是,Java 序列化库要求您有一个无参数构造函数,以便它知道如何在反序列化时创建对象。

我在库中采用的另一种方法是调用无参数构造函数(如果存在),或者仅创建对象而不调用构造函数(如果不存在)。如果您不调用构造函数,这可能会产生字段未初始化的副作用。例如

class MyClass {
// only set if you call a constructor!
transient final List<String> list = new ArrayList<>();
int a;

MyClass(int a) { this.a = a; }
}

在这种情况下,没有无参数构造函数意味着很难知道如何正确反序列化它。

关于java - Java 强制您提供无参数构造函数背后的逻辑是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55267995/

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