Java - 无法将Integer转换为int

5

我被这个问题困扰已经很久了。基本上我无法将Integer转换为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 Tobias
2
@EricTobias,您是正确的,但我不确定OP是否有意尝试创建一个包装器,而问题是由于错误使用泛型引起的。 - Ivaylo Slavov
2个回答

10

你已经用一个泛型类型替换了java.lang.Integer,并将其命名为Integer

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

应该是

public boolean check(Integer num)

3

从Java 1.5开始支持自动装箱。因此,您可以使用以下语法:

int i = num;

你提到了自动装箱,但你的例子实际上是相反的;自动拆箱。此外,使用OP的泛型,这将不起作用,因为<Integer>是一个泛型类型(而不是java.lang.Integer)。 - Elliott Frisch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接