final でない @GuardedBy アノテーションを報告します。
非 final フィールドをガードすると、そのフィールド自体ではなく、フィールドの値 (可変) がロックされます。そのため、予期しない競合状態が発生する可能性があります。
例:
private ReadWriteLock lock = new ReentrantReadWriteLock(); // 非 final のフィールドをガード
private Object state;
@GuardedBy("lock")
public void bar() {
state = new Object();
}
サポート対象の @GuardedBy アノテーションは以下の通りです。
net.jcip.annotations.GuardedByjavax.annotation.concurrent.GuardedByorg.apache.http.annotation.GuardedBycom.android.annotations.concurrency.GuardedByandroidx.annotation.GuardedBycom.google.errorprone.annotations.concurrent.GuardedBy