Я использую этот метод, чтобы удалить Html
код из моих String
с в классах:Отражение в inhertited классов
public void filterStrings() {
Field[] fields = this.getClass().getDeclaredFields();
if (fields == null) {
return;
}
for (Field f : fields) {
if (f.getType() == java.lang.String.class) {
try {
String value = (String) f.get(this);
f.set(this, methodToRemoveHtml(value));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
работает отлично. Поскольку я поймал себя на том, что ставил этот метод во многих классах, которые я использую, я думал, что позволю всем этим классам наследовать из BaseClass и реализовать метод только там. Но когда я это делаю, я получаю:java.lang.IllegalAccessException: access to field not allowed
на каждой попытке.
- Почему это происходит и
- Как я могу это исправить?
[setAccessible] (http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/AccessibleObject.html#setAccessible (boolean)) –