【问题标题】:A Java ArrayList QusetionJava ArrayList 问题
【发布时间】:2014-10-09 05:55:12
【问题描述】:

问题:如果您有一个 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返回的声明。

【问题讨论】:

  • 你应该阅读更多关于Java Generics
  • 这并不重要,但通常如果您正在创建引用,您应该更喜欢接口作为类型而不是实现它的类,所以它应该看起来更像List&lt;XXX&gt; list = new ArrayList&lt;XXX&gt;();

标签: java string object arraylist computer-science


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    以下是您应该如何思考答案:以下每个返回什么?

    我。三。是一回事。如果您调用 get,这两个实例都将返回 java.lang.Object。您必须将其转换为 java.lang.String 才能使用它。

    只有二。如果您调用 get,将返回 String,因为通用声明。

    【讨论】:

      【解决方案3】:

      第二个。

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

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

      【讨论】:

        【解决方案4】:

        我。和 III 都是对象列表(并且 I. 在声明中有错字,正确的类类型是“对象”)。您可以在其中存储任何内容,包括字符串,但据编译器所知...它们是 Object 类型,因此如果您想对使用 ArrayList.get(.. .) 方法,您必须将返回的对象转换为 String。

        二。是一个字符串列表(存储对象的类型由 <...> 之间的泛型部分指定),编译器知道 ArrayList 只会存储字符串,因此 ArrayList.get() 将直接返回一个字符串,而无需需要演员表。

        您可以在Java Generics Tutorial 中看到这个确切的例子。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-07-26
          • 1970-01-01
          • 1970-01-01
          • 2010-12-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多