我正在使用AssetManager的openFd()方法构建AssetFileDescriptor的实例,如下所示:
String path = "myDir/myfile.wav";
AssetFileDescriptor descriptor = getAssets().openFd(path);
AssetFileDescriptor descriptor2 = getAssets().openFd(path);
boolean areEquals = descriptor.equals(descriptor2);
在这种情况下,areEquals为false,因为AssetFileDescriptor类不会覆盖equals()方法。
当使用AssetFileDescriptor实例作为HashMap中的键时,这会导致问题。
在引用同一资产文件时,不应该有两个AssetFileDescriptor实例相等吗?
答案 0 :(得分:0)
在您的情况下,因为AssetFileDescriptor
没有覆盖equals()
,您必须假设您使用的equals()
来自Object
,所以请告诉您跑了是:
public boolean equals(Object paramObject) {
return (this == paramObject);
}
它是否与你想测试的平等相对应?
如果不是,则必须覆盖AssetFileDescriptor.equals()