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");

はエラーを引き起こしていません..リストのADDメソッドは、オブジェクトタイプである1つの引数を取ります.なぜ私はこの問題に直面しているのか助けてください..私はたくさん検索しましたが、解決策が得られませんでした.私はこれについて練習する必要があります.このエラーのために、私は練習を続けることができません..

4

3 に答える 3

4

バージョン 1.5 より前の Java を使用していると思います。オートボクシングは 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

「add」メソッドがデータ型で失敗していることに注意してください。

int、double、および boolean。

これらはすべてプリミティブ データ型であり、メソッドが期待する「オブジェクト」ではありません。リテラル値を使用しているため、ここではオートボクシングが発生していないと思いますが、これについてはわかりません。それにもかかわらず、これを修正するには、各プリミティブの関連付けられたオブジェクト タイプを使用します。

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 に答える