Первоначальная проблема заключается в том, что сгенерированный код почти всегда является неправильным путем - хотя некоторые люди настаивают на этом, поэтому давайте извлечем из него максимум пользы.
Вы можете расширить класс и добавить функциональность.Это, вероятно, плохая идея в вашем случае:
class ConfigItem1Wrapper extends config_item_1 {
public Boolean getStatus()
{…}
...
}
Основная проблема здесь в том, что у вас будет ~ 10 из этих классов, поэтому много дублирующегося кода или пересылки.Это также создаст вам проблемы, если любая система, которую вы используете для создания этих классов, также захочет создать их экземпляр ... если это произойдет, вы получите экземпляры "config_item_1" вместо более удивительно названного "ConfigItem1Wrapper"
Вы можете инкапсулировать класс в другой класс в качестве делегата.Это не так плохо, как кажется.Некоторые редакторы могут автоматически создавать такие классы.Каждый метод создается заново, и вызов перенаправляется на внутреннюю копию, которую вы храните.
class ConfigItem1Wrapper {
config_item_1 delegate;
String some_method1(var) {
return delegate.some_method1(var);
}
}
Если вы можете использовать такое делегирование (надеюсь, с помощью генерации кода некоторых сред IDE), это может быть лучшим способом, этодает вам полный контроль.
Если бы вы использовали Groovy (расширенный набор Java), вы обнаружите, что он имеет аннотацию @Delegate, которая делает все это за вас.Просто так:
class ConfigItem1Wrapper {
@Delegate config_item_1 delegate;
public Boolean getStatus() {
return status;
}
}
сгенерирует все методы из config_item_1 в ConfigItem1Wrapper с вашим дополнительным кодом.Я предполагаю, что это не сработает для вас.Жаль.
Честно говоря, почти любое другое решение, которое я мог бы дать вам, - это своего рода делегирование.Я рекомендую вам просто найти способ заставить делегирование работать (без необходимости перенаправлять каждый метод вручную)