2

私はいくつかの Java 演習を行っており、インスタンス変数のスコープに制限を課す方法を見つけようとしています。

たとえば、Time というクラスを作成しました。時、分、秒の 3 つのインスタンス変数があります。

たとえば、時間は 0 から 23 の間である必要があります。時間変数を操作するために、このクラス内にいくつかのメソッドがあります。ただし、時間が常に 0 から 23 の範囲内であることを確認する必要があります。

メソッド、列挙型があることは知っています。このような

public enum hour {
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
    21, 22, 23
}

次に、時間型変数を Time クラスに挿入します。

しかし、hour が double 型変数、連続変数の場合はどうでしょう。そしてそれには上限と下限があります。連続変数を区切るにはどうすればよいですか?

4

3 に答える 3

3

制限を設定する方法を保存するコンパイラはありません。可能な (そして常に推奨される) 方法は、プライベート変数を使用し、setter メソッドで境界をチェックインし、境界が正しくない場合は RuntimeException をスローすることです。

例:

public class Time {
    private double hour;

    public void setHour(double hour) {
        if(hour < 0 ) { // and so on - i think you can imagine the logical expression
            throw new IllegalArgumentException("hour "+hour+" is not valid.");
        }
        this.hour = hour;
    }
}
于 2013-08-28T10:07:09.190 に答える
1

Bean バリデーターを使用できます

public class Time {

@Min(0) @Max(23)
private int hour;

public void setHour(int hour) {
    this.hour = hour;
   }
}
于 2013-08-28T10:56:18.797 に答える