java 通过字符串去对象寻找与字符串值相同名字的属性
如题,我在这定义一个User的对象publicclassUser{StringuserId;StringuserName;}然后我再写个接口,对方传过来的是两个参数,第一...
如题,我在这定义一个User的对象
public class User
{
String userId;
String userName;
}
然后我再写个接口,对方传过来的是两个参数,
第一个参数field,放的值是userId,
第二个是keyWord,放的值是123,
然后我new一个对象,
User user=new User();
这样,我怎么用第一个参数去对应到user里面的userId属性,然后把keyWord里面的123赋值到user的userId,
user.userId=123;这种的不用说,
其实我的目的就是通过传来的字符串去找到新new出对象的属性,然后赋值,只能是动态的赋值 展开
public class User
{
String userId;
String userName;
}
然后我再写个接口,对方传过来的是两个参数,
第一个参数field,放的值是userId,
第二个是keyWord,放的值是123,
然后我new一个对象,
User user=new User();
这样,我怎么用第一个参数去对应到user里面的userId属性,然后把keyWord里面的123赋值到user的userId,
user.userId=123;这种的不用说,
其实我的目的就是通过传来的字符串去找到新new出对象的属性,然后赋值,只能是动态的赋值 展开
1个回答
展开全部
通过java的反射可以实现,代码:
public class User {
String userId;
String userName;
public static void main(String[] args) {
User u = new User();
u.set("userId", "001");
u.set("userName", "xiaoming");
System.out.println(u);//User{userId='001', userName='xiaoming'}
}
public void set(String field, Object keyWord) {
try {
Field f = getClass().getDeclaredField(field);
f.setAccessible(true);
f.set(this, keyWord);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public String toString() {
return "User{" + "userId='" + userId + '\'' + ", userName='" + userName + '\'' + '}';
}
}
有问题请追问
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询