support access private member of super class

This commit is contained in:
金戟
2021-03-09 14:21:05 +08:00
parent 121536a337
commit 4995bbd9a9
3 changed files with 81 additions and 50 deletions

View File

@@ -210,7 +210,8 @@ public class EnablePrivateAccessTranslator extends BaseTranslator {
private void findAllPrivateMembers(Class<?> cls) {
Field[] fields = cls.getDeclaredFields();
for (Field f : fields) {
if (Modifier.isFinal(f.getModifiers()) || Modifier.isPrivate(f.getModifiers())) {
if (Modifier.isFinal(f.getModifiers()) || Modifier.isPrivate(f.getModifiers())
|| Modifier.isProtected(f.getModifiers())) {
memberRecord.privateOrFinalFields.add(f.getName());
} else {
memberRecord.nonPrivateNorFinalFields.add(f.getName());
@@ -218,12 +219,15 @@ public class EnablePrivateAccessTranslator extends BaseTranslator {
}
Method[] methods = cls.getDeclaredMethods();
for (final Method m : methods) {
if (Modifier.isPrivate(m.getModifiers())) {
if (Modifier.isPrivate(m.getModifiers()) || Modifier.isProtected(m.getModifiers())) {
checkAndAdd(memberRecord.privateMethods, m.getName(), getParameterLength(m));
} else {
checkAndAdd(memberRecord.nonPrivateMethods, m.getName(), getParameterLength(m));
}
}
if (cls.getSuperclass() != null) {
findAllPrivateMembers(cls.getSuperclass());
}
}
private void checkAndAdd(Map<String, List<Integer>> map, String key, final int value) {