CVTE2016校园招聘实习笔试编程题之一

来源:互联网 发布:淘宝货品拒收后怎么 编辑:程序博客网 时间:2024/05/22 20:29

17号晚上做了CVTE的在线笔试题,倒数第二道题知道应该是用JAVA的反射来完成,但是忘记了语法快哭了,题目大概是这样的:

将Map中的值封装到targetVo对象中,targetVo对应的类如下:

class TargetVo{private String name;private int age;private boolean isMarried;//...@Overridepublic String toString() {return "TargetVo [name=" + name + ", age=" + age + ", isMarried=" + isMarried + "]";}}

然后给出了大致的框架:

public class BeanTest {public TargetVo getTargetVo(Map<String, Object> map) {TargetVo targetVo = new TargetVo();for (String key : map.keySet()) {//在这里填写代码}return targetVo;}}
知道反射却忘记语法的我眼泪掉下来哭

于是我很无奈是这么写的微笑

public TargetVo getTargetVo(Map<String,Object> map){TargetVo targetVo = new TargetVo();for (String key : map.keySet()) {if("name".equals(key)){targetVo.setName(map.get(key));}else if("age".equals(key)){targetVo.setAge(map.get(key));}// ...}return targetVo;}

交卷后不甘心,复习了下,我想差不多是这么写的吧,大家认为呢微笑

public static TargetVo getTargetVo(Map<String, Object> map) throws Exception {//反射会有异常需要处理,为了简单直接抛出去了TargetVo targetVo = new TargetVo();Class<? extends TargetVo> targetVoClass = targetVo.getClass();Field[] fields = targetVoClass.getDeclaredFields();for (String key : map.keySet()) {for (Field field : fields) {if (field.getName().equals(key)) {field.setAccessible(true);field.set(targetVo, map.get(key));}}}return targetVo;}





0 0
原创粉丝点击