簡體   English   中英

首先在 AtomicBoolean 中獲取更新的值

[英]Get the updated value first in AtomicBoolean

getAndSet返回“前一個”值,然后設置更新后的值,我想要“反向”行為,返回更新后的值,然后將其設置在AtomicBoolean對象中。 就像你做的那樣

if(bolVal = otherBolVal)

此處的分配先於評估。 可以單獨使用AtomicBoolean來完成還是我需要一個對我AtomicBoolean的自定義類。

我有這個

sharedPref.edit().putBoolean("tag", isOvertime = false).apply();

這是在一行中完成的,現在我被迫將布爾值作為可變對象傳遞,所以我不想創建自定義類並選擇 AtomicBoolean。 現在我正在尋找一種方法來以最少的努力完成相同的單行分配,而無需創建新類或額外的行表達式。

像這樣的東西?

private final AtomicBoolean atomicBoolean = new AtomicBoolean();

public boolean setAndGet(boolean bool) {
    atomicBoolean.getAndSet(bool);
    return bool;
}

不,您將需要一個擴展 AtomicBoolean 或 Utils 類的自定義類。 在 AtomicBoolean 中沒有理由為此提供一個方法。 即使在您的情況下,它也只是多一行代碼......

我想出它是我正在尋找的一種單線解決方案,但我根本不知道我是否走對了路。

在我需要分配和返回 true 的情況下,我使用:

sharedPref.edit().putBoolean("tag", at.getAndSet(true) || true).apply();

在我需要分配和返回 false 的情況下,我使用:

sharedPref.edit().putBoolean("tag", at.getAndSet(false) && false).apply();

我沒有不知道新值或更新值的情況,但在這種情況下:

sharedPref.edit().putBoolean("tag", newVal ? (at.getAndSet(newVal) || newVal) : (at.getAndSet(newVal) && newVal)).apply();

我知道這是一場災難,特別是最后一次,但這是我能想到的最好的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM