java - 使用静态字段扩展类以“覆盖”静态属性
问题描述
这引起了激烈的辩论,我想知道这种方法是否存在任何问题。
我有一个只包含静态字符串的类:
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)
我的论点是其他人认为它不适合测试,因为它不能被适当地模拟出来。
解决方案
推荐阅读
- javascript - Mouse events not triggering in react
- python - 将具有不同扩展名的最旧文件名移动到公共文件夹。Python
- sql - Impala SQL 中的增量
- javascript - discord.js:JSON 星球属性未定义
- java - 窗口中的 JToolBar
- r - 如何为R中的每个不同列选择不同行中的值?
- python - 通过python从MySQL数据库中检索Base64图像
- python-3.x - python Websockets (asyncio ver) 强制关闭连接
- xml - 如何处理嵌套元素并在 xslt 中仅输出一个
- vb.net - vb.net 基础知识,如何创建一个公共函数来处理动态创建的按钮