在我贡献的两个项目中,我遇到了这个错误:
FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: java.util.Objects
这是因为我使用hashCode
类实施了equals
和Objects
方法。
@Override
public int hashCode() {
int hash = 7;
hash = 97 * hash + Objects.hashCode(this.image);
hash = 97 * hash + Objects.hashCode(this.car);
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final SummaryContent other = (SummaryContent) obj;
if (!Objects.equals(this.image, other.image)) {
return false;
}
return Objects.equals(this.car, other.car);
}
编译时,我不会收到错误或警告。为什么会发生这种情况?
答案 0 :(得分:4)
我在新游戏中遇到同样的问题。我认为,它发生了,因为不同的移动设备制造商为手机提供不同版本的jvm。
我对这个问题的解决方法是将对象的实现从对象复制到我的项目中。它很脏,但工作:
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
答案 1 :(得分:3)
我错了。我的设备是android 4.1,api级别16,类Objects
自api级别19以来。