java - java8中的有界类型编译错误

标签 java generics

这两个示例不使用 Oracle Java 8 JDK 进行编译。

错误是:

error: incompatible types: Object cannot be converted to Integer for (Integer i : foo.set )

示例1)

import java.util.Set;

class Foo<T>
{
    protected Set<Integer> set;
}

class Foo2 extends Foo
{
    void doit()
    {
        for (Integer i : set )
        {

        }
    }
}

示例 2)

import java.util.Set;

class Foo<T>
{
    public Set<Integer> set;
    public static void main( String[] args )
    {
        Foo foo = new Foo();
        for (Integer i : foo.set )
        {

        }
    }
}

这是错误还是功能?据我所知,泛型不适用于原始类型的领域。

最佳答案

这不是一个错误。您需要传递泛型类型来创建新实例:

class Foo<T>
{
  public Set<Integer> set;
  public static void main( String[] args ) {

      Foo<Integer> foo = new Foo();  // changed code

      for (Integer i : foo.set )
      {

      }
    }
}

关于java - java8中的有界类型编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42972858/

相关文章:

java - 如何在android中创建二维颜色渐变

java - 如何让 Jlist 在添加新元素后自动向下滚动

具有泛型参数的 Swift 3 泛型扩展约束

generics - 为什么通用代数数据类型需要 `T` 成员类型?

java - 如何访问嵌套在另一个泛型中的泛型?

java - 从 hbm 文件生成带注释的 java 类

java - 如何确定汽车在图像中的位置?

java - 在使用 Mule 4.1.4. 的 Mule 扩展中,有没有办法获取有关我的操作中的下一个操作的信息?

java - 如何将类级泛型传递给方法

c# - 在扩展方法 (C#) 中获取类型成员的简单语法