Java 这两种代码之间有什么区别吗?

Java 这两种代码之间有什么区别吗?,java,Java,假设我有一个方法总是返回一个包含0或1个对象的列表:(从不返回null) public List getList(){ 列表=新的ArrayList(); 如果(某些标准){ 列表。添加(“1”); } 退货清单; } 这两种代码之间有什么区别吗 public Object getFirstElement() { List<Object> list = getList(); return(getList().get(0)); } public对象getFirstE

假设我有一个方法总是返回一个包含0或1个对象的列表:(从不返回null)

public List getList(){
列表=新的ArrayList();
如果(某些标准){
列表。添加(“1”);
}
退货清单;
}
这两种代码之间有什么区别吗

public Object getFirstElement() {
    List<Object> list = getList();
    return(getList().get(0));
}
public对象getFirstElement(){
List=getList();
返回(getList().get(0));
}

public Object getFirstElement() {
    List<Object> list = getList();
    if (!CollectionUtils.isEmpty(list)
        return list.get(0);
    return null;
}
public对象getFirstElement(){
List=getList();
如果(!CollectionUtils.isEmpty(列表)
返回列表。获取(0);
返回null;
}
是的,有

在第一种情况下,如果某个creteria为false,
list
为空列表:

导入java.util.List; 导入java.util.ArrayList

public class Test {

    boolean someCriteria = false;

    public static void main(String[] args) {
        new Test().getFirstElement();
    }


    public List<Object> getList() {

        List<Object> list = new ArrayList<Object>();
        if (someCriteria) {
            list.add("1");
        }
        return list;
    }


    public Object getFirstElement() {
        List<Object> list = getList();
        return(getList().get(0));
    }
}
import java.util.List;

import org.apache.commons.collections.CollectionUtils;


public class Test {

    boolean someCriteria = false;

    public static void main(String[] args) {
        System.out.println(new Test().getFirstElement());
    }


    public List<Object> getList() {

        List<Object> list = new ArrayList<Object>();
        if (someCriteria) {
            list.add("1");
        }
        return list;
    }


        public Object getFirstElement() {
            List<Object> list = getList();
            if (!CollectionUtils.isEmpty(list))
                return list.get(0);
            return null;
        }   
}
在第二种情况下,函数返回
null

导入java.util.ArrayList

public class Test {

    boolean someCriteria = false;

    public static void main(String[] args) {
        new Test().getFirstElement();
    }


    public List<Object> getList() {

        List<Object> list = new ArrayList<Object>();
        if (someCriteria) {
            list.add("1");
        }
        return list;
    }


    public Object getFirstElement() {
        List<Object> list = getList();
        return(getList().get(0));
    }
}
import java.util.List;

import org.apache.commons.collections.CollectionUtils;


public class Test {

    boolean someCriteria = false;

    public static void main(String[] args) {
        System.out.println(new Test().getFirstElement());
    }


    public List<Object> getList() {

        List<Object> list = new ArrayList<Object>();
        if (someCriteria) {
            list.add("1");
        }
        return list;
    }


        public Object getFirstElement() {
            List<Object> list = getList();
            if (!CollectionUtils.isEmpty(list))
                return list.get(0);
            return null;
        }   
}

是的。您可以看到差异。忽略语法错误,调用
.get(0)
在一个没有任何内容的列表上会抛出某种索引错误。再一次,简单的代码试运行会显示出差异,这是不是太难问了?你想找出什么样的差异?显然代码的行为是不同的,但你想比较的方面是什么:稳定性、可维护性、p性能、行数等…?谢谢。我不知道如果您试图访问列表中不存在的项,会出现异常。
null