0

先日、私は spring-security (3.0.x ブランチ) で acl モジュールのソースコードを調べていて、ACLImpl オブジェクトに ACE のプライベートセットがあることがわかりました (db では 1-many リフレクションによって表されます)。コードをさらに詳しく調べてみると、ace のプライベート セットが設定されている明確なポイントがないことがわかりました。人口がで終わったことを見つけるのにしばらく時間がかかりましたjava.lang.reflect.Field

private final Field fieldAces = FieldUtils.getField(AclImpl.class, "aces");
...
fieldAces.setAccessible(true);
...
try {
    fieldAces.set(acl, aces);
} catch (IllegalAccessException e) {
    throw new IllegalStateException("Could not set AclImpl entries", e);
}

(すべてのコードは からコピーされましたBasicLookupStrategy.java) Field は主に、あいまいな jar 内のプライベート フィールドを開示するために使用されると考えていました。コードフローを難読化する以外に何か理由はありますか?

4

1 に答える 1