java - 无法将整数转换为int

问题描述:

我被这个问题困住了很长时间。基本上我不能将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

你已经取代java.lang.Integer与您有一个名为Integer

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

泛型类型应该是

public boolean check(Integer num) 

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