JAVA画限制范围的函数图像,Java类构造函数具有范围限制的参数

I'm new to Java and I'm asking this question just to help me better understand OOP.

Let's say I'm defining a new Class called Hour. To instantiate this Class, we need to specify an integer to indicate the hour of this instance.

Hour hr = new Hour(16); // this means to define an hour that indicates 4pm.

So when we define the Hour Class here, the parameter for the constructor should within the range [0, 24). How can we define such a parameter and can I throw an error when a parameter that is out of this range is specified?

Thanks.

解决方案

If you would like the compiler to catch the error, you could define an enum for the hours, then use that as the parameter of the constructor of Hour. This might make the Hour class useless, though.

public class Hours {

_1, _2, _3, // etc.

}

public class Hour {

public Hour(Hours hour) { // no need for runtime check here, can not be wrong}

}

Hour hour = new Hour(Hours._3);

This technique may not be the best here, but generally it is better to rely on compile time checks than on runtime ones.

你可能感兴趣的:(JAVA画限制范围的函数图像)