【问题标题】:How the initialization of a List may affect in my program?List 的初始化如何影响我的程序?
【发布时间】:2015-06-14 06:11:27
【问题描述】:

考虑这两种情况:

a)

List resultList = new ArrayList( );
resultList = getResultList( something );

b)

List resultList = null;
resultList = getResultList( something );

“a”和“b”有什么区别吗? 我应该使用哪个?

【问题讨论】:

    标签: arraylist initialization variable-assignment


    【解决方案1】:

    A) 初始化一个List,这样就可以在你的代码中正常使用了。

    B) 使其为空,因此如果您想在代码中使用它,则必须对其进行初始化。 (“a)”选项。)

    【讨论】:

    • 感谢您的回答,这让我再次编辑我的问题...场景 a) 和 b) 怎么样?a) 和 b) 之间有什么区别、目的或影响?
    • 对不起,我没听懂这个问题。你能检查一下吗?什么是“getResultList()”,参数“a”是从哪里来的。
    • 如果 "getResultList()" 返回一个非空的 ArrayList,它应该没有任何区别。像这样:function getResultList(param){ List myList = new ArrayList(); myList.add(param); return myList; } 否则,b 选项会抛出错误。类似 NullReferenceException.
    • 我明白了,实际上我很好奇,这两种方法都有效,但他们有时将结果列表分配给“new ArrayList();”的目的是什么?有时,他们只是将其分配给 null?我只是猜想,“new ArrayList()”是否会导致任何性能问题?可能会使应用程序变慢?
    • 如果你暂时不打算使用它,但如果你将它分配为null,它的改进真的很小。无论如何,这取决于您使用的语言以及变量如何保存在内存中。除非您需要进行微改进,否则没有显着差异。
    【解决方案2】:

    答案就在您的问题中。在第一种情况下,您只声明了列表。在使用之前,您仍然需要在代码中初始化列表。

    【讨论】:

      【解决方案3】:

      结果它们是一样的。

      但是(a)有一个不必要的操作new ArrayList,因为它创建了ArrayList,然后立即丢弃它。

      顺便说一句:为了可读性,最好的方法应该是:

      List resultList = getResultList( param );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-15
        • 2019-06-27
        • 1970-01-01
        • 1970-01-01
        • 2021-08-03
        • 2012-01-11
        相关资源
        最近更新 更多