【问题标题】:what does java.util.Arrays$ArrayList mean?java.util.Arrays$ArrayList 是什么意思?
【发布时间】:2015-04-11 05:25:44
【问题描述】:

我不断收到以下错误消息

File: C:\Users\jiangbuyun\Desktop\p5\p5pack\P5Tests.java  [line: 1084]
Failure: java.lang.AssertionError: expected: java.util.Arrays$ArrayList<[A:X, B:X, C:X]> but was: java.util.ArrayList<[A:X, B:X, C:X]>

我有一门课叫做电路。以下是一些字段。

private List<Contact> inputs, outputs;
private List<Wire> innerWires;

这就是我获取输入的方法

public void parseContactsLine(String line){
    Scanner sc = new Scanner(line);
    int i=0; //token's position
    while (! sc.hasNext("->")){
      Wire w = new Wire (sc.next());
      innerWires.add(w);
      Contact c = new Contact(innerWires.get(i),innerWires.get(i),true);
      inputs.add(c);
      i++;
    }

我的测试用例:

public void circuit_parseContactsLine1(){
    List<Contact> empty = Arrays.asList(new Contact[]{});
    assertEquals(empty, vanillaCircuit.getInputs());
    assertEquals(empty, vanillaCircuit.getOutputs());
    List<Contact> ins = Arrays.asList(new Contact[]{
      new Contact(new Wire("A"), new Wire("A"), true),
        new Contact(new Wire("B"), new Wire("B"), true),
        new Contact(new Wire("C"), new Wire("C"), true)}
    );
    List<Contact> outs = Arrays.asList(new Contact[]{
      new Contact(new Wire("D"), new Wire("D"), false)}
    );

    vanillaCircuit.parseContactsLine("A B C -> D");
    assertEquals(ins , vanillaCircuit.getInputs ());
    assertEquals(outs, vanillaCircuit.getOutputs());
  }

这个错误似乎是由 ArrayList 和 List 之间的比较引起的。测试用例使用 Array.asList() 来获取“输入”,我的方法也返回一个数组列表。谁能给我解释一下 java.util.Arrays$ArrayList 是什么意思?

我尝试输入时的错误 input.add(Arrays.asList(c));

File: C:\Users\jiangbuyun\Desktop\p5\p5pack\Circuit.java  [line: 48]
Error: no suitable method found for add(java.util.List<Contact>)
    method java.util.Collection.add(Contact) is not applicable
      (argument mismatch; no instance(s) of type variable(s) T exist so that java.util.List<T> conforms to Contact)
    method java.util.List.add(Contact) is not applicable
      (argument mismatch; no instance(s) of type variable(s) T exist so that java.util.List<T> conforms to Contact)

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

    java.util.Arrays$ArrayListArrays 类中的一个嵌套类,它实现了List 接口。此实现具有固定长度并由数组支持。

    方法Arrays.asList返回这个类的一个实例。

    【讨论】:

    • 所以测试用例实际上返回了这个嵌套类的东西,而我的方法返回一个arraylist?
    • 在我的方法中,我尝试做诸如inputs.add(Arrays.asList(c))之类的事情,但我什至无法编译。
    • @user4593157 我看不到您在哪里创建 java.util.ArrayList 的实例,但如果 vanillaCircuit.getInputs () 返回 java.util.ArrayList 的实例,那么是的。
    • @user4593157 这个无法编译的inputs.add(Arrays.asList(c)) 代码在哪里?在其上下文中查看它会有所帮助。
    • 我已经发布了使用 asList() 时的错误信息。你会看一下吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2017-06-11
    • 2018-03-05
    相关资源
    最近更新 更多