Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的空构造函数_Java_Constructor - Fatal编程技术网

Java中的空构造函数

Java中的空构造函数,java,constructor,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")); }

在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)创建构造函数(String name、UUID UUID、String announcement..等等),加载..不确定什么是最佳实践?

这取决于您的用例。如果您不希望类变量在设置后更改,则在这种情况下,将这些变量声明为最终变量并使用参数化构造函数。如果您希望变量在设置后更改,则使用带有setter和getter的默认构造函数。B其他选项都很好。

这取决于您的用例。如果您不希望在设置类变量后更改它们,那么在这种情况下,将这些变量声明为final并使用参数化构造函数。如果您希望变量在设置后更改,那么使用默认构造函数和setter和getter。opt初始化非常好。

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

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

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

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

  • 如果您的对象是不可变的,那么您可以使用构建器模式来构建一个不可变的对象(您可以编写如下内容:
    派系派系=新派系.Builder().name(name).uuid(uuid).announcement(announcement).build();


如果对象状态在实例化
类时不应更改,则为构造函数提供参数,删除setter更好。
通过这种方式,您可以避免不良行为。

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

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

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

  • 如果您的对象是不可变的,那么您可以使用构建器模式来构建一个不可变的对象(您可以编写如下内容:
    派系派系=新派系.Builder().name(name).uuid(uuid).announcement(announcement).build();


是的,同时具有无参数和参数化构造函数是绝对好的。有关示例,请参见
StringBuilder
“否则我可以使用与mySQL数据匹配的参数创建构造函数”--这时不妨使用ORM方法^+空构造函数是自动生成的,您甚至不必编写它。尽管有时您必须自己定义一个空的、无参数的构造函数,以便某些框架能够使用它(如果没有空构造函数,它将抛出一个错误)。在尝试提出更多基于意见的问题之前,请先阅读,这些问题会引起争论性讨论,因为它们没有一个统一的答案。是的,无参数构造函数和参数化构造函数都可以。有关示例,请参见
StringBuilder
。。。“否则,我可以使用与mySQL数据匹配的参数创建构造函数“--这时不妨使用ORM方法^+空构造函数是自动生成的,您甚至不必编写它。尽管有时您必须自己定义一个空的、无参数的构造函数,以便某些框架能够使用它(如果没有空构造函数,它将抛出一个错误)。在尝试提出更多基于意见的问题之前,请先阅读,因为这些问题没有一个统一的答案,因此会引起争论性的讨论。