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
。
请帮忙。先谢谢你。
答
你已经取代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工作正常。如果你需要一个具有更多特性的整数实现,我会邀请你重新思考你的设计和命名约定,然后再为你自己写一个新的Integer类。 – Eric 2014-11-24 07:46:07
@EricTobias,虽然你是正确的,但我不确定OP **是否有意**尝试创建一个包装,而这个问题是由误用的泛型引起的。 – 2014-11-24 08:15:07