Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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_Design Patterns - Fatal编程技术网

Java 当一个类中有多个构造函数时,使代码在每次创建对象时执行

Java 当一个类中有多个构造函数时,使代码在每次创建对象时执行,java,design-patterns,Java,Design Patterns,我有一个类用户,我想在创建时为其分配一个id。我这样做是为了: public class User { private String firstName; private String lastName; private int id; private static int count; { id = count++; } public User() {} public User(String firstName) {...} publ

我有一个类用户,我想在创建时为其分配一个id。我这样做是为了:

public class User  {
  private String firstName;
  private String lastName;

  private int id;
  private static int count;

  {
    id = count++;
  }

  public User()  {}

  public User(String firstName)  {...}

  public User(String lastName)  {...}
}
但是我不确定这是否是最好的方法?更好的做法是将
id=count++
代码放在默认构造函数中,并在其他构造函数中调用它,如:

public User(String firstName)  {
  this();
  ...
}

class
User
也有孩子,比如
Student
Worker
,等等。

@user207421你是什么意思?到目前为止,它不再重复-id在初始化块中只设置一次,您可以简单地使用'private int id=count++`;没有初始化block@racraman这听起来像是我错过的另一条路!另一个用户(他删除了他的答案)也使用了这种方法,所以我可能会坚持下去?我想我听说初始化块比构造函数/内联初始化更糟糕,仅仅创建一个用户数组或用户集合不是更容易吗?