Одним из подходов было бы «подделать» ссылку this
, передав экземпляр правильного объекта статическим методам, а затем вызвав getFields
для этого объекта.
Другой вариант - сохранить список полей в статическом поле класса. Ваша переопределенная getFields()
реализация может вернуть его (или, предпочтительно, копию), и ваши статические методы могут получить к нему прямой доступ.
Я бы предпочел реализовать последнюю опцию, так как она намного менее неуклюжа (поскольку вам никогда не придется создавать новый бесполезный объект для передачи статическим методам.) Кроме того, он отражает идею о том, что класс поля не зависят от данного экземпляра.