您的位置:首页 > 其它

建议46: equals应该考虑null值情景

2018-01-19 17:16 274 查看
import java.util.ArrayList;

import java.util.List;

public class Client10 {

public static void main(String[] args) {

Person p1 = new Person("张三");

Person p2 = new Person(null);

List<Person> l =new ArrayList<Person>();

l.add(p1);

l.add(p2);

System.out.println("列表中是否包含张三:"+l.contains(p1));

System.out.println("列表中是否包含张三 :"+l.contains(p2));

}

}

class Person{

private String name;

public Person(String _name){

name = _name;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public boolean equals(Object obj) {

if(obj instanceof Person){

Person p = (Person)obj;

if(p.getName()==null||name==null){

return false;

}else{

return name.equalsIgnoreCase(p.getName());

}

// Person p = (Person) obj;

// return name.equalsIgnoreCase(p.getName());

}

return false;

}

}

附带:ArrayList . contains 源码实现

public boolean contains(Object paramObject)

{

return indexOf(paramObject) >= 0;

}

public int indexOf(Object paramObject)

{

int i;

if (paramObject == null)

for (i = 0; i < this.size; i++)

if (this.elementData[i] == null)

return i;

else

for (i = 0; i < this.size; i++)

if (paramObject.equals(this.elementData[i]))

return i;

return -1;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: