2014-11-24 203 views
4

我被這個問題困住了很長時間。基本上我不能將Integer轉換爲int。java - 無法將整數轉換爲int

class CheckOdd implements Check<Integer> 
{ 
    public <Integer> boolean check(Integer num) 
    { 
    int i = (Integer) num; 
    return (i % 2 != 0); 
    } 
} 

我一直在使用
int i = (Integer) object;int i = (int) object;intValue()
但仍沒有運氣嘗試。如果我使用int i = (Integer) object;它會產生error:incompatible types。 如果我使用int i = (int) object;它會產生error: inconvertible types

請幫忙。先謝謝你。

+2

在自己的包裝器上編寫一個包裝是一個不好的做法。 java.lang.Integer工作正常。如果你需要一個具有更多特性的整數實現,我會邀請你重新思考你的設計和命名約定,然後再爲你自己寫一個新的Integer類。 – Eric 2014-11-24 07:46:07

+2

@EricTobias,雖然你是正確的,但我不確定OP **是否有意**嘗試創建一個包裝,而這個問題是由誤用的泛型引起的。 – 2014-11-24 08:15:07

回答

9

你已經取代java.lang.Integer與您有一個名爲Integer

public <Integer> boolean check(Integer num) // <-- not a java.lang.Integer 

泛型類型應該是

public boolean check(Integer num) 
2

Java 1.5的後自動裝箱得到了支持。所以你可以使用

int i = num; 
+0

你提到[Autoboxing](http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html),但你的例子實際上是相反的; * Autounboxing *。另外,由於OP的泛型,這將不起作用,因爲''是一個泛型類型(而不是'java.lang.Integer')。 – 2014-11-24 18:50:00