Java 重写equal 时候,强转提示不可达。为何
发布网友
发布时间:2022-05-19 01:28
我来回答
共3个回答
热心网友
时间:2024-03-02 17:36
1,一般重写equals方法不用自己写,自己写的代码不够完美,还有就是每次都手写太烦
2,使用快捷键Alt+Shift+s,
3,选择equals来重写,下面是标准代码:
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (gender == null) {
if (other.gender != null)
return false;
} else if (!gender.equals(other.gender))
return false;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
热心网友
时间:2024-03-02 17:36
public class Student {
int id;
String name;
String gender;
int age;
public Student(int id, String name, String gender, int age) {
this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
if (obj == this)
return true;
if (!(obj instanceof Student))
return false;
// return super.equals(obj); 这里直接写return
// ,没有if判断句,那么无论如何必须return,就无法执行下面的代码了
Student s = (Student) obj;// 提示不可达
return id == s.id && name.equals(s.name) && gender.equals(s.gender) && age == s.age;
}
}
热心网友
时间:2024-03-02 17:37
return super.equals(obj); // 这句去掉就可以了,在这里就返回了,后面的那些当然不可达,这句等价于 return obj == this;