什么是Java ArrayLists错误

时间:2013-12-10 04:38:45

标签: java arraylist

我完全确信这是代码片段有错误。从头开始编程的Java中的Java说没有错误。这是代码:

ArrayList temp = new ArrayList();
temp.add("35");
temp.add(35);

第2行没有错误吗?一个arrayList不能有一个字符串和同一个ArrayList中的整数正确吗?如果我错了请纠正我,明天我会对此进行测试。提前谢谢大家!

6 个答案:

答案 0 :(得分:4)

是的,这是正确的。

由于您未在ArrayList中声明任何类型,因此它允许所有对象。

现在您的ArrayList与

相同
ArrayList<Object> temp = new ArrayList<Object>();

见下面的例子

ArrayList<String> temp = new ArrayList<String>();
temp.add("35");
temp.add(35); //compiler error, Only Strings please

见下面的例子

ArrayList<Integer> temp = new ArrayList<Integer>();
temp.add("35");//compiler error, Only Integers please
temp.add(35); 

使用Raw类型时非常气馁,总是喜欢使用特定类型。

现在在第一种情况ArrayList temp = new ArrayList();中,当您返回时,它返回一个未知类型的Object。它可能是整数或字符串,您需要在从List

返回后手动检查它

答案 1 :(得分:1)

它是正确的,因为它的原始类型意味着您可以添加任何对象。您可以添加扩展Object类的任何内容 你可以写temp.add(x); ,其中x可以是任何东西String,int,long日期扩展的任何东西Object

例如

String x="";
    int x1=1;
    Date df=new Date();
temp.add(x);// will work
temp.add(x1);//will work
temp.add(df);// will work

答案 2 :(得分:1)

ArrayList temp = new ArrayList();这里没有问题。这是一个ArrayList,它将接受任何数据类型,因为它没有定义特定的数据类型(原始ArrayList)。

答案 3 :(得分:0)

这是对的。由于您尚未为列表声明任何类型,因此它将所有元素视为Object类。你的定义是

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

用于编译器。在这种情况下,35将被装箱为Integer,而“35”将为StringIntegerString都是Object的子类,并且不会出现任何编译时错误。

答案 4 :(得分:0)

是的,您的数组列表可以包含String和整数。 但是数组列表只存储对象String和Integer对象它不支持int原始数据类型只有arraylist中的对象

ArrayList<Object>  arr=new ArrayList<>();
  String s="35";
  Integer in=35;
  arr.add(in);
  arr.add(s);`

答案 5 :(得分:0)

在java中有一些名为Generics的东西,它允许程序员抽象出类型。

Arraylist代码在内部使用它。所以当你没有定义任何泛型类型时,默认类型是Object类类型。

由于StringInteger都是Object类的子类,因此根据OOP允许此操作。