2013-02-23 33 views
1

我對如何投我的課程Integer有疑問。例如:如何讓我的課程能夠投入整數

public class IntegerField extends Field { 
    private Integer value; 
    public IntegerField(Integer value) { 
     super(); 
     this.value = value; 
    } 
    public int intValue() { 
     return value; 
    } 
} 

我怎樣才能讓:

IntegerField a = new IntegerField(8); 
Integer b = (Integer) a; 

謝謝!

+2

你不能在Java中像在C++中那樣實現強制轉換操作 – Taky 2013-02-23 19:24:35

+0

真的嗎?有沒有簡單的解決方法? – 2013-02-23 19:26:27

回答

4

不可以。您不能在Java中定義自己的轉換運算符。但是,添加方法很簡單:

public class IntegerField extends Field { 
    private Integer value; 
    public IntegerField(Integer value) { 
     super(); 
     this.value = value; 
    } 

    public Integer toInteger() { 
     return value; 
    } 
} 

... 

IntegerField a = new IntegerField(8); 
Integer b = a.toInteger(); 

爲什麼要選擇演員?

(請注意,我已經刪除了intValue方法,將拋出一個異常,如果value爲null。的toInteger調用者可以隨時轉換爲int,如果他們想行爲。)

+0

我的主要目標是使用IntegerField直接作爲整數,但我需要附加一些屬性,所以這就是我創建IntegerField的原因。從所有答案來看,我認爲沒有簡單的方法來做到這一點。我想我必須使用你的解決方案來使用toInteger方法。謝謝! – 2013-02-23 19:40:02

0

整數b =(整數)a; ---不正確的becouse值是私人的,你必須編寫一個獲取值的方法,Integer b = a.intValue();