【问题标题】:HashSet of integers整数的 HashSet
【发布时间】:2014-03-04 03:10:27
【问题描述】:
public class MyClass<Integer> extends AnotherOne<Integer> {
    public MyClass(HashSet<Integer> ar) {    
        super(ar);
    } 
}

AnotherOne 是一个抽象(通用)类,它有一个以HashSet&lt;T&gt; 作为参数的构造函数。然后它有另一种方法,它使用T 类型作为其参数。

一切正常,但我必须使用Integer 作为参数来覆盖该方法,并且使用Integer 而不是int 似乎很奇怪。有没有办法使用原始 int?

【问题讨论】:

  • 有什么问题吗?
  • @Leo 如果值得告诉,请在答案中填写?

标签: java generics inheritance abstract-class hashset


【解决方案1】:

不,您不能将原始 int 用于 HashSet。

这对所有其他通用集合类也有效。

【讨论】:

  • 好的,但是使用整数安全吗?有一个获取参数的方法看起来很奇怪 public void method(Integer i,Integer k)
  • 安全。对我来说这并不奇怪。或者,您可以将 int 传递给您的方法,但转换为 Integer 并将 Integer 添加到您的集合中。取决于您的具体用例和偏好。
【解决方案2】:

不,泛型不能将原始类型作为泛型类型参数;必须是引用类型,如Integer

此外,您声明了一个泛型类型参数Integer,它现在隐藏了实际的java.lang.Integer 类。如果MyClass 本身不是通用的,则将其从类中删除:

public class MyClass extends AnotherOne<Integer>

如果是,则为泛型类型参数使用单个大写字母:

public class MyClass<T> extends AnotherOne<T>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 2020-02-22
    • 1970-01-01
    • 2012-09-24
    相关资源
    最近更新 更多