2012-03-01 52 views
2

我需要表現完全像整數與此不同,我希望它溢和下溢到一定值的數據類型。換句話說,我想設置Integer類的對象/實例的MAX_VALUE和MIN_VALUE。問題是MAX_VALUE和MIN_VALUE是常量,最後是Integer類。我應該怎麼辦?Java:如何定義基於整數的自定義數據類型?

回答

7

你必須創建自己的包裝類:

public class CustomInteger 
{ 
    public static final int MAX_VALUE = 5000; 
    public static final int MIN_VALUE = -5000; 

    private final int value; 

    public CustomInteger(int value) 
    { 
     // TODO: Validation 
     this.value = value; 
    } 

    // Add all the methods you want - e.g. integer operations etc 
    // performing custom overflow/underflow on each operation 
} 

您需要決定是否要一個固定的對限制整個種類,或每個實例是否可以有不同的限制(和這意味着什麼時候加上兩個不同的限制值等)。

+0

全類型有固定的限制你提到什麼,所以沒有問題。我唯一的問題仍然存在(可能有點愚蠢)是否可以定義運算符,如「+」而不是「add」? – Pouya 2012-03-01 10:00:28

+0

@Pouya:不,Java不支持運算符重載。 – 2012-03-01 10:03:27

3

由於java.lang.Integer是最終不能擴展它。唯一的選擇就是把它包起來:

public class LimitedInteger { 
    private int value; 
    private int min; 
    private int max; 


    LimitedInteger() { 
    } 
    LimitedInteger(int value) { 
     this.value = value; 
    } 
    LimitedInteger(int value, int min, int max) { 
     this.value = value; 
     this.min = min; 
     this.max = max; 
    } 
} 

等,等