java - Java 中的空构造函数

标签 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"));
}

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

public Faction(Player player, UUID uuid) {}

我想知道是否可以有一个简单的构造函数,并且只需将值设置为和时间。

否则我可以使用与 mySQL 数据匹配的参数(public Faction(String name, UUID uuid, String notification..etc))创建一个构造函数来加载.. 不确定什么是最佳实践?

最佳答案

如果实例化 Faction 类时对象状态不应更改,请提供带参数的构造函数并删除 setter 更好。
这样,您就可以避免不良行为。

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

要实现您的需求,您主要有两种方式:

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

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

关于java - Java 中的空构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43901264/

相关文章:

java - 如何通过 Clojure 启用 JClouds 和 Rackspace 的 CDN?

java - 分配的最终对象字段在构造函数中可能仍然为 null 是真的吗?

c++ - 清除 C++ 构造函数中的重复代码

c++ - 复制构造函数的调用

c# - 使用 base 创建构造函数的快捷方式 (C# Visual Studio 2015)

java存储实例变量并使用键值之一进行访问

java - org.hibernate.hql.ast.QuerySyntaxException 异常

java - 在Dataflow中手动发送PubSub消息

python - __init__() 内部和外部变量之间的差异(类和实例属性)

java - 使用 JDBC 将值插入到 postgresql