ガードが static フィールドであるインスタンスフィールドまたはメソッドに対して使用されている @GuardedBy アノテーションを報告します。 非 static のものを static でガードすると、過度なロックの競合を引き起こす可能性があります。任意のオブジェクトインスタンスのロックされているフィールドにアクセスがあると、すべてのオブジェクトインスタンスでそのフィールドへの同時アクセスが阻止されるためです。

例:


    private static ReadWriteLock lock = new ReentrantReadWriteLock(); //static のガードしているフィールド
    private Object state;

    @GuardedBy("lock")
    public void bar() {
        state = new Object();
    }

サポート対象の @GuardedBy アノテーションは以下の通りです。