一个Java ArrayList问题

时间:2014-08-15 13:35:39

标签: java string object arraylist computer-science

问题:如果你有一个List并且它有String对象,那么在调用String方法之前,List的哪些声明不要求使用get方法检索的对象被强制转换为Strings? List <Object> a = new ArrayList <Object>();

I.  List<Object> a = new ArrayList <Object>(); 
II. List<String> a = new ArrayList <String>(); 
III.List a = new ArrayList(); 

我真的不明白这个问题。我认为你必须强制转换为String以将其用作String,然后它必须是一个不会将String对象作为String返回的声明。

4 个答案:

答案 0 :(得分:2)

以下是您应该如何思考答案:以下各项有何回报?

予。和III。是一回事。如果你打电话给get,两个实例都会返回java.lang.Object。您必须将其强制转换为java.lang.String才能使用它。

只有II。如果你调用get,将返回String,因为泛型声明。

答案 1 :(得分:0)

2不需要显式转换。 1和3实际上是一回事。

答案 2 :(得分:0)

第二个。

ArrayList<String> a = new ArrayList <String>(); 

这意味着arraylist只能保存字符串类型变量。它在尖括号中表示字符串。这称为泛型,它允许您取出的数据采用您指定的形式,在本例中为String。

答案 3 :(得分:0)

予。和III都是对象列表(和I.在声明上有拼写错误,正确的类类型是“对象”)。你可以在它们中存储任何东西,包括字符串,但是只要编译器可以告诉它们......它们是Object类型,所以如果你想在你使用ArrayList.get检索的对象上调用String方法(.. 。)方法您必须将返回的对象强制转换为String。

II。是一个字符串列表(存储对象的类型由&lt; ...&gt;之间的泛型部分指定),编译器知道ArrayList只存储字符串,所以ArrayList.get()将直接返回一个String,无需演员。

您可以在Java Generics Tutorial中看到这个问题的一个例子。