Я скопировал следующий класс из исходного кода Picasso's
. На самом деле, я просил Picasso
не кэшировать изображения.Побитовые операторы в java
Может ли один объяснить мне эти две линии
NO_CACHE(1 << 0),
NO_STORE(1 << 1);
Я знаю об операторах поразрядными, я просто хочу знать, почему мы должны их здесь?
Они также подавлены 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_CACHE' имеет значение' index' '1',' NO_STORE' имеет значение 'index'' 2'. – QBrute
Они используются для битмаскирования в методах. – Kayaman
И какой-то странный синтаксис - это вызов частного конструктора enums. – Izruo