如果引用同一个文件,为什么AssetFileDescriptor的两个实例不相等?

时间:2016-11-08 14:03:23

标签: java android

我正在使用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实例相等吗?

1 个答案:

答案 0 :(得分:0)

在您的情况下,因为AssetFileDescriptor没有覆盖equals(),您必须假设您使用的equals()来自Object,所以请告诉您跑了是:

    public boolean equals(Object paramObject) {
        return (this == paramObject);
    }

它是否与你想测试的平等相对应? 如果不是,则必须覆盖AssetFileDescriptor.equals()