java - 使用反射根据接收到的参数访问属性 - Java
问题描述
我正在 Spring 中开发一个项目,并且我有一个将区域映射到站点的配置文件,例如:
===========
Areas Mapper
===========
Sites:
USA:
- Arizona
- Florida
- New York
- Texas
Europe:
- Germany
- Russia
- Poland
现在,我从 API 调用中获取区域作为参数,并且我需要根据此参数返回站点列表。
我想知道,如果在这种情况下使用反射来动态访问站点列表是正确的方法吗?如果是这样,你会怎么做?
这是我到目前为止所做的:
配置类:
@ConfigurationProperties(prefix = "Sites")
@Component
@Data
public class AreasToSitesMapperConfig {
protected List<String> usa;
protected List<String> europe;
protected List<String> australia;
}
映射器类:
@Component
public class AreasToSitesMapper {
@Inject
private AreasToSitesMapperConfig areasToSitesMapperConfig;
public List<String> getSitesForArea(String area) throws NoSuchFieldException {
Field field = AreasToSitesMapperConfig.class.getDeclaredField(area);
field.setAccessible(true);
return field.get(this);
//Of course I can implement it as follows, but I'm not sure this is the right way to do it :
if (area == "USA") return areasToSitesMapperConfig.usa ......
}
}
这是来自服务的调用:
List<AreaDataDAO> areaDataList = areasRepository.getDataBySiteInAndDateBetweenOrderByDateDesc(
areasToSitesMapper.getSitesForArea(area),
);
如您所见,'area' 被传递给 'getSitesForArea' 函数,并且基于此参数我需要返回相关列表。
解决方案
推荐阅读
- c# - 使用 HtmlAgilityPack 抓取 url 内容会产生错误
- android - Android Addon.d 脚本无法正常运行
- reactjs - 在反应中将滚动位置设置为底部
- git - 关闭并打开新密钥后,SSH 密钥在 git bash 上不起作用
- c++ - C ++:将枚举包装在一个类中
- android - 当我们使用改造搜索任何天气位置时无法获取图标
- mysql - 将多张表的左连接仅用于一张表时,MySQL Query 无法得到结果
- python - Pyinstaller在创建exe文件时无法导入pylsd
- javascript - 按索引从数组中更新 JSON 键值
- python - django-simple-history save_without_historical_record 不起作用