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