gpt4 book ai didi

java - java中的位运算符

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:14 24 4
gpt4 key购买 nike

我从 Picasso's 复制了以下类源代码。其实我是问Picasso不要缓存图像。

谁能给我解释一下这两行

NO_CACHE(1 << 0), NO_STORE(1 << 1);

I know about bitwise operators, I just want to know why we need them here?

他们还压制了PointlessBitwiseExpression警告。

/** Designates the policy to use when dealing with memory cache. */
@SuppressWarnings("PointlessBitwiseExpression")
public enum MemoryPolicy {

/** Skips memory cache lookup when processing a request. */
NO_CACHE(1 << 0),
/**
* Skips storing the final result into memory cache. Useful for one-off requests
* to avoid evicting other bitmaps from the cache.
*/
NO_STORE(1 << 1);

static boolean shouldReadFromMemoryCache(int memoryPolicy) {
return (memoryPolicy & MemoryPolicy.NO_CACHE.index) == 0;
}

static boolean shouldWriteToMemoryCache(int memoryPolicy) {
return (memoryPolicy & MemoryPolicy.NO_STORE.index) == 0;
}

final int index;

private MemoryPolicy(int index) {
this.index = index;
}
}

最佳答案

您是在问我们为什么需要它们?这段代码归结为:

NO_CHACHE(1), NO_STORE(2);

就是这样(这里只是为了完整:那些常量声明只是调用采用 int 值的枚举的私有(private)构造函数)。

因此,您的问题的答案是:根本不需要这些移位操作!它们没有任何附加值(value)(更糟的是:它们似乎让读者感到困惑)

潜在的想法可能是稍后会发生某种“位掩码”。你知道,当你以后用“位”来思考时,有人在声明这些常量时也有“用位思考”的好主意。

但在那种情况下,像

NO_CACHE(0b01), NO_STORE(0b10);

也差不多可以完成这项工作。但即便如此;我会发现没有帮助。如果有的话,我宁愿在那里放一个 javadoc 来表示这些常量稍后将用作“按位标志”。

关于java - java中的位运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com