分配: 时间等级:
为小时,分钟和秒提供3个私人数据成员。使用long类型或int。
如果你使用int,你必须在ctors内部进行投射。
添加一个no-arg ctor,它使用p38上的代码清单2.6中的代码来赋值 从当前时间到小时,分钟和秒。
添加另一个ctor,它将采用一个名为elapseTime的长参数(更好 将是elapsedTime),自Unix纪元日期以来的毫秒数。 第二个ctor也将使用代码清单2.6来设置数据成员 自那个时代以来经过的时间。
为每个数据成员添加一个getter。每个getter只需要一个语句。
需要Getter,因为数据成员是私有的。
添加一个toString方法,该方法返回Time对象的小时,分钟和秒。
这是我的类Time()代码,我的setTime()代码代表上面提到的书籍参考。
包chapter_10;
public class Time {
private long hour;
private long minute;
private long second;
public Time() {
}
public void setTime(long elapsedTime){
long millisecond = System.currentTimeMillis();
second = millisecond / 1000;
minute = second / 60;
hour = minute /60;
//equate for current time.
second = second %60;
minute = minute %60;
hour = hour %24;
}
public long getHour() {
return hour;
}
public long getMinute() {
return minute;
}
public long getSecond() {
return second;
}
public String toString(){
return getHour() + ":" + getMinute() + ":" + getSecond();
}
}
答案 0 :(得分:1)
public Time() {
setTime(0L);
}
但是,在构造函数中调用可覆盖的方法是不好的做法。因此,您应该将该方法设为私有或最终,或使该类本身最终。
另外,你的方法有点奇怪,因为它需要一些时间作为参数,但不会对它做任何事情。
答案 1 :(得分:0)
首先,为什么要在同一个类的方法中调用类构造函数?
问题是如果你正在访问这个类,你应该先调用一个构造函数,除非你的方法是静态的,所以你可以这样做:
public static void setTime(long elapsedTime){
...
new Time(elapsedTime);
...
}
然后从调用部分:
Time.setTime(1L);
虽然我认为这可以回答你的问题(如果我理解正确的话),真正的问题是为什么从一个方法调用同一个类的构造函数?调用构造函数并将方法的所有逻辑放入其中会不会更好?
我希望这会有所帮助。