Java &引用;构造函数调用必须是构造函数中的第一条语句;错误
我正在尝试创建一个构造函数,它接受一个字符串并构造一个日期对象。到目前为止,这是我的解决方案,但我遇到了以下错误: 构造函数调用必须是构造函数中的第一条语句 我意识到我需要Java &引用;构造函数调用必须是构造函数中的第一条语句;错误,java,Java,我正在尝试创建一个构造函数,它接受一个字符串并构造一个日期对象。到目前为止,这是我的解决方案,但我遇到了以下错误: 构造函数调用必须是构造函数中的第一条语句 我意识到我需要这个(…)在做任何事情之前,但是当我需要首先填充日期字符串时,我该怎么做呢? 如何避免这个错误? 注意:要用字符串构造日期,它的格式为“月/日/年”首先需要调用this() 而是将赋值移动到私有方法 private void assginValues (int month, int day, int year){
这个(…)
在做任何事情之前,但是当我需要首先填充日期字符串时,我该怎么做呢?
如何避免这个错误?
注意:要用字符串构造日期,它的格式为“月/日/年”首先需要调用this()
而是将赋值移动到私有方法
private void assginValues (int month, int day, int year){
m = month;
d = day;
y = year;
}
如果还需要填充日期字符串
,也可以使用此方法构建它
然后从两个构造函数调用该方法。确保接受字符串的构造函数不调用this()
,因为共享方法负责赋值
您也可以在一行中完成所有操作,但随后多次调用split()
,这是一种浪费:
this(Integer.parseInt(s.split("/")[0]), Integer.parseInt(s.split("/")[1]), Integer.parseInt(s.split("/")[2]));
this()
需要先调用
而是将赋值移动到私有方法
private void assginValues (int month, int day, int year){
m = month;
d = day;
y = year;
}
如果还需要填充日期字符串
,也可以使用此方法构建它
然后从两个构造函数调用该方法。确保接受字符串的构造函数不调用this()
,因为共享方法负责赋值
您也可以在一行中完成所有操作,但随后多次调用split()
,这是一种浪费:
this(Integer.parseInt(s.split("/")[0]), Integer.parseInt(s.split("/")[1]), Integer.parseInt(s.split("/")[2]));
我发现避免这种情况的最好方法是使用静态工厂
public static Date MakeDate(String s) {
dateStrings = s.split("/");
return new Date(Integer.parseInt(dateStrings[0]), Integer.parseInt(dateStrings[1]),
Integer.parseInt(dateStrings[2]));
}
看在警察的份上,我可能会让这项工作负担过重,只是为了避免一个工厂和一个建设者的怪诞
private Date(int month, int day, int year) {
m = month;
d = day;
y = year;
}
public static MakeDate(int mont, int day, int year){
//You can figure this part out
}
这样做的一个好处是,你可以对这些工厂进行不同的命名,以明确它们的意图。在这种情况下可能没有必要,但这是一个很好的选择,特别是对于更复杂的类。我发现避免它的最好方法是使用静态工厂
public static Date MakeDate(String s) {
dateStrings = s.split("/");
return new Date(Integer.parseInt(dateStrings[0]), Integer.parseInt(dateStrings[1]),
Integer.parseInt(dateStrings[2]));
}
看在警察的份上,我可能会让这项工作负担过重,只是为了避免一个工厂和一个建设者的怪诞
private Date(int month, int day, int year) {
m = month;
d = day;
y = year;
}
public static MakeDate(int mont, int day, int year){
//You can figure this part out
}
这样做的一个好处是,你可以对这些工厂进行不同的命名,以明确它们的意图。在这种情况下可能没有必要,但这是一个很好的选择,特别是对于更复杂的类。
此(…)
应该是构造函数中的第一行。但是,如果不首先填充日期字符串,如何构造它呢?此(…)
应该是构造函数中的第一行。但是,如果不首先填充日期字符串,如何构造它呢?