3

我正在使用 Eclipse JUno,我在使用 arraylist 的 .add() 时遇到问题,请帮助。这是我的代码

     import java.util.ArrayList;
public class A
{
public static void main(String[] args) 
  {
    ArrayList list=new ArrayList();
    list.add(90);
    list.add(9.9);
    list.add("abc");
    list.add(true);
    System.out.println(list);
  }
}

即将出现的错误是:

 Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    The method add(int, Object) in the type ArrayList is not applicable for the arguments (int)
    The method add(Object) in the type ArrayList is not applicable for the arguments (double)
    The method add(Object) in the type ArrayList is not applicable for the arguments (boolean)

    at A.main(A.java:7)

但奇怪的是,这条线

  list.add("abc");

没有引起任何错误..列表的添加方法采用一个对象类型的参数然后为什么我遇到这个问题请帮助大家..我搜索了很多我没有得到任何解决方案。我必须对此进行练习由于这个错误,我无法继续我的练习..

4

3 回答 3

4

我想您使用的是 java 1.5 之前的版本。自动装箱是在 java 1.5 中引入的。而且您的代码在 java 1.5+ 上编译得很好。

编译为源 1.4:

javac -source 1.4 A.java


A.java:7: error: no suitable method found for add(int)
    list.add(90);
        ^
    method ArrayList.add(int,Object) is not applicable
      (actual and formal argument lists differ in length)
    method ArrayList.add(Object) is not applicable
      (actual argument int cannot be converted to Object by method invocation conversion)
A.java:8: error: no suitable method found for add(double)
    list.add(9.9);
        ^
    method ArrayList.add(int,Object) is not applicable
      (actual and formal argument lists differ in length)
    method ArrayList.add(Object) is not applicable
      (actual argument double cannot be converted to Object by method invocation conversion)
A.java:10: error: no suitable method found for add(boolean)
    list.add(true);
        ^
    method ArrayList.add(int,Object) is not applicable
      (actual and formal argument lists differ in length)
    method ArrayList.add(Object) is not applicable
      (actual argument boolean cannot be converted to Object by method invocation conversion)
3 errors

使用 1.5(或更高版本):

javac -source 1.5 A.java

warning: [options] bootstrap class path not set in conjunction with -source 1.5
Note: A.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 warning

我建议您按照@SoulDZIN 的建议手动更新您的java或将所有原语装箱为对象。

于 2013-06-13T14:41:59.410 回答
1

请注意,数据类型的“添加”方法失败:

整数、双精度和布尔值。

这些都是原始数据类型,而不是该方法所期望的“对象”。我相信这里没有发生自动装箱,因为您使用的是文字值,但我不确定这一点。不过,要解决此问题,请使用每个原语的关联对象类型:

ArrayList list=new ArrayList();
list.add(new Integer(90));
list.add(new Double(9.9));
list.add("abc");
list.add(new Boolean(true));
System.out.println(list);

资料来源:经验

编辑:

我总是尝试指定我的集合的类型,即使它是一个对象。

ArrayList<Object> list = new ArrayList<Object>();

但是,如果您运行的是 Java 1.4 或更低版本,显然这不是一个好习惯。

于 2013-06-13T14:37:49.520 回答
0

适用于 JDK 6

public static void main(String[] args) {
            ArrayList list=new ArrayList();
            list.add(90);
            list.add(9.9);
            list.add("abc");
            list.add(true);
            System.out.println(list);
    }

打印结果:[90, 9.9, abc, true]。

如果您仍然使用低于jdk 6的版本。请指定版本。

于 2013-06-13T14:41:30.080 回答