gpt4 book ai didi

java - 没有 arg 构造函数或 arg 构造函数

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

在我的程序中,我读取了一个固定长度的文件,将每个字符串存储在一个局部变量中,然后将每个值存储到一个类类型数组列表中。为了创建数组列表的对象,我使用了带有所有变量的参数构造函数。下面的代码演示了这一点。

String a = "text1";
String b = "text2";
SampleModel sm = new SampleModel(a,b);
ArrayList<SampleModel> sampleList = new ArrayList<>();
sampleList.add(sm);

我发现这完全正确,但我的同事要求我将其更改为无参数构造函数并改为调用 getter 和 setter。就像下面这样。

SampleModel sm = new SampleModel();
ArrayList<SampleModel> sampleList = new ArrayList<>();
String a = "text1";
String b = "text2";
sm.setA(a);
sm.setB(b);
sampleList.add(sm);

有什么理由比参数构造函数更喜欢无参数构造函数吗? (我的程序有大约 15 个变量)

最佳答案

这取决于类的使用方式。

例如,一个不可变类将需要一个接受参数但没有setter的构造函数。

但是 Java Bean 需要一个无参数的构造函数和 setter。

一些需要考虑的事情:

  • 封装可能很有值(value)。除了像 JavaBeans 这样的特殊情况,通常可以根据所需的交互来设计类的接口(interface),而不是根据当前的数据成员集。
  • 方法有名称。Java 不支持命名参数。方法名称在调用代码中传达了如何使用实际参数。如果您的类有多个参数,通过方法传递它们可以使调用代码更具可读性。
  • 不可变类具有值(value)。如果您直接在类中添加命名 setter,它就不是不可变的。构建器模式允许您接受构造参数,即使对于不可变类也是如此。

关于java - 没有 arg 构造函数或 arg 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35369778/

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