将方法调用传递给构造函数java

时间:2011-09-28 21:05:17

标签: java

分配: 时间等级:

为小时,分钟和秒提供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();
   }
}

2 个答案:

答案 0 :(得分:1)

public Time() {
    setTime(0L);
}
但是,在构造函数中调用可覆盖的方法是不好的做法。因此,您应该将该方法设为私有或最终,或使该类本身最终。

另外,你的方法有点奇怪,因为它需要一些时间作为参数,但不会对它做任何事情。

答案 1 :(得分:0)

首先,为什么要在同一个类的方法中调用类构造函数?
问题是如果你正在访问这个类,你应该先调用一个构造函数,除非你的方法是静态的,所以你可以这样做:

public static void setTime(long elapsedTime){
     ...
     new Time(elapsedTime);
     ...
}

然后从调用部分:

Time.setTime(1L);

虽然我认为这可以回答你的问题(如果我理解正确的话),真正的问题是为什么从一个方法调用同一个类的构造函数?调用构造函数并将方法的所有逻辑放入其中会不会更好?

我希望这会有所帮助。