Java中的空构造函数

J. *_*Doe 0 java constructor

在 Java 中使用空构造函数可以吗?例如,从 MySQL 数据库加载数据时,我想执行以下操作:

ResultSet set = statement.executeQuery();
while (set.next()) {
    Faction faction = new Faction();
    faction.setId(UUID.fromString(set.getString("id")));
    faction.setName(set.getString("name"));
}
Run Code Online (Sandbox Code Playgroud)

因为我已经有一个派系类的构造函数,

public Faction(Player player, UUID uuid) {}
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以有一个普通的构造函数并且只设置值和时间。

否则,我可以使用与 mySQL 数据匹配的参数(公共派系(字符串名称、UUID uuid、字符串公告等)来创建一个构造函数来加载......不确定什么是最佳实践?

dav*_*xxx 5

如果在Faction实例化类时对象状态不应该改变,则提供一个带有 args 的构造函数并删除 setter 更好。
通过这种方式,您可以避免不良行为。

现在按照你的说法,你可能需要设置很多String参数。
使用构造函数执行此操作非常容易出错,因为您在使用它时可能会在参数顺序上出错。

为了满足您的需求,您有两种主要方式:

  • 使用空的构造函数,然后按照您的建议使用 setter(如果对象是可变的,则是可取的)

  • 如果您的对象是不可变的,您可以使用 Builder 模式来构造一个不可变的对象(您编写如下内容: Faction faction = new Faction.Builder().name(name).uuid(uuid).announcement(announcement).build();


归档时间:

查看次数:

3477 次

最近记录:

8 年,6 月 前