网站制作公司去哪找,外资企业可以在中国境内做网站吗,wordpress iscategory,成都网站建设求职简历最近在改公司项目bug#xff0c;需要修改别人的代码。在读别人的源码时感觉到反射真的是能够极大的提高代码的优雅性#xff0c;在某些特定场景能极大的简化代码的编写。因此写了这篇文章用以记录分享。
我们先还原一下场景#xff0c;在做数据展示的时候#xff0c;需要处…最近在改公司项目bug需要修改别人的代码。在读别人的源码时感觉到反射真的是能够极大的提高代码的优雅性在某些特定场景能极大的简化代码的编写。因此写了这篇文章用以记录分享。
我们先还原一下场景在做数据展示的时候需要处理传入接口的实体类。但实体类中的字段特别多只需要展示以tcp_开头的字段现在就需要实现这样的一个接口。
为了方便讲解我们简化一下业务。
定义实体类Model
public class Model {private String tcp_value_a;private String udp_value_b;private String tcp_value_c;
}现在我们定义接口
MapString, String handleModel(Model model) {MapString, String res new HashMap();// 使用反射获取字段名Field[] fields model.getClass().getDeclaredFields();for (Field f : fields) {f.setAccessible(true);// 获取字段名String fieldName f.getName();// 以tcp_开头if (fieldName.startsWith(tcp_)) {// 需要显示该字段数据, 记录res.put(fieldName, f.get(model));}}return res;
}这个接口通过反射的方式获取类中所有成员变量的名字通过循环的方式判断是否以tcp_开头通过这样的方式判断字段是否需要返回。
如果我们不使用反射的方式那么我们可能得定义一个数组用于记录每个成员变量的姓名然后手动编码确定字段。这样的编码十分丑陋且不说如果字段数量有多少如果字段变更需要变动的代码时非常大的程序的拓展性将会极差。
在涉及与方法名相关操作的场景中通常应优先考虑反射机制是否能够提供解决方案。