Java中有沒有一種方法可以通過反射或其他方式從其相應的重寫方法中訪問在超類方法中聲明的局部變量子類?從子類中的重寫方法中訪問超類方法中的局部變量
具體來說,我正在使用Spring Security的DefaultLdapAuthoritiesPopulator
。這個類有一個名爲getAdditionalRoles
的方法,文檔中說子類可以重寫以返回用戶的額外角色。
該課程還實施getGrantedAuthorities
方法,該方法實際上調用getAdditionalRoles
方法。源代碼看起來是這樣的:
public final GrantedAuthority[] getGrantedAuthorities(DirContextOperations user, String username) {
...
Set roles = getGroupMembershipRoles(userDn, username);
Set extraRoles = getAdditionalRoles(user, username);
...
}
此方法調用getGroupMembershipRoles
,這確實爲這個用戶,並將其存儲在一個名爲roles
一個局部變量定義的組LDAP搜索。現在在執行getAdditionalRoles
時,我還需要訪問在LDAP中爲此用戶定義的組,因此我可以推斷此用戶的其他角色。出於商業原因,我無法直接在LDAP中定義這些附加角色。
我可以簡單地繼續前進,實現LdapAuthoritiesPopulator
我自己,但我想知道如果有周圍的一些其他的方式,因爲我真正需要的是訪問roles
局部變量在父類的方法,以避免我不得不做第二個LDAP搜索。
難道你不能重寫'getGroupMembershipRoles()'? – Zutty 2013-03-21 17:02:42
好點。我可以做到。出於某種原因,我的印象是該方法在父項中被宣佈爲最終。這樣可以減少複製/粘貼而不是重做整個班級。 – Jeshurun 2013-03-21 17:04:01