【问题标题】:The type ArrayList is not generic; it cannot be parameterized with arguments <Integer>ArrayList 类型不是通用的;它不能用参数 <Integer> 参数化
【发布时间】:2014-02-27 04:48:27
【问题描述】:

我正在尝试完成一个 JCF 数组列表,它在 30 分钟前编译得很好,但现在我收到错误“ArrayList 类型不是通用的;它不能用参数进行参数化”。我已经尝试了一些事情来弄清楚,但我不知所措。代码如下:

import java.util.*;

/**
 * Class to test the java.util.ArrayList class.
 */
public class Main
{

    public static void main(String[] args)
    {
        Main myAppl = new Main();

    }

    public Main()
    {
        ArrayList<Integer> numbers = new ArrayList<Integer>();

        //list creation
        for (int i = 0; i < 10; i++)
            numbers.add((int) (Math.random() * 100));

        System.out.println("List of numbers:");
        System.out.println(numbers);

        Scanner in = new Scanner(System.in);
        System.out.print("Please, enter an int value: ");
        int x = in.nextInt();

        if (numbers.contains(x))
            System.out.println("Found!");
        else
            System.out.println("Not found!");
    }
}

【问题讨论】:

  • 你用什么版本的Java编译?
  • 我怀疑你的类路径中还有其他 ArrayList 类。将import java.util.*; 替换为java.util.ArrayList,我相信它肯定会起作用。
  • System.out.println(numbers.getClass()); 输出什么?

标签: java generics arraylist integer


【解决方案1】:

2 种可能性:

  1. 您正在使用来自第 3 方包的一些神秘 ArrayList,而不是 java.util.ArrayList;或

  2. 您的编译器设置是 pre-1.5 或您的有效 JDK 是 pre-1.5,因此泛型不可用。

【讨论】:

  • “来自第 3 方包的一些神秘 ArrayList”或者可能在他自己的包中
【解决方案2】:

尝试将您的班级名称更改为其他名称。即不是 ArrayList 或 main。

【讨论】:

  • 期待已久。
【解决方案3】:

假设您正在使用(并定位)大于或等于 1.5 的版本,那么您必须有一个名为 ArrayList 的类来隐藏您想要的版本;你应该使用

// If your compiler settings are correct.
java.util.ArrayList<Integer> numbers = new java.util.ArrayList<Integer>();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 2016-06-01
    • 1970-01-01
    • 2015-06-15
    • 2013-04-30
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多