Расширение класса со статическими полями с целью «переопределения» статических свойств - PullRequest
0 голосов
/ 27 июня 2018

Это вызывает бурные дебаты, и я хотел бы знать, есть ли какие-либо проблемы с этим подходом.

У меня есть класс, который не содержит ничего, кроме статических строк:

public class EventConstants {
    public static ID = "1";
    public static DOMAIN = "local";
    public static final DEVICE = "PC";
    public static final SOURCE = "local";
}

Теперь ID и DOMAIN не являются final, потому что я решил переопределить их, учитывая Spring ConfigurationProperties. Итак ...

public CustomEventConstanstants extends EventConstants {

    @Autowired
    private PropertyMapper mapper;

    @PostConstruct
    public void init() {
        ID = (mapper.ID != null) ? mapper.ID : EventConstants.ID
        DOMAIN = (mapper.DOMAIN != null) ? mapper.DOMAIN : EventConstants.DOMAIN
    }
}

Идея этого класса заключается в том, что пользователь может просто вызвать один класс и использовать соответствующую константу, настроенную свойством Spring, или нет. Пример:

object.methodA(CustomEventConstants.ID)  // This will return the configured ID or what's in EventConstants
object.methodB(CustomEventConstants.DEVICE)

Аргумент, который я привел, заключается в том, что другие считают, что он не подходит для тестирования, поскольку его нельзя надлежащим образом исключить.

...