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
LDAP 搜索为此用户定义的组,并将其存储在名为 的本地变量中roles
。现在在我的实现中getAdditionalRoles
,我还需要访问 LDAP 中为该用户定义的组,因此我可以推断该用户的其他角色。出于业务原因,我无法直接在 LDAP 中定义这些附加角色。
我可以简单地继续LdapAuthoritiesPopulator
自己实现,但我想知道是否有其他方法,因为我真正需要的是访问roles
父类方法中的局部变量,以避免我不得不进行第二次 LDAP 搜索。