java 动态生成getset_通过get、set方法,动态生成对象
最近在看Java的反射,把學(xué)習(xí)的東西整理一下,大家共同研究,有需要改進(jìn)的地方,請(qǐng)大家指正。
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectionTest {
public static void main(String args[]) {
try {
//通過反射獲得類
Class clazz = Class.forName("User");
//實(shí)例化類
Object obj = clazz.newInstance();
//獲得類的所有屬性
Field[] fields = clazz.getDeclaredFields();
for(Field f : fields){
PropertyDescriptor pd = new PropertyDescriptor(f.getName(), clazz);
//獲得寫方法
Method wM = pd.getWriteMethod();
//獲得讀方法
Method rM = pd.getReadMethod();
//獲得方法的參數(shù),因?yàn)槭菢?biāo)準(zhǔn)的set方法,所以只取第一個(gè)參數(shù)
Class[] classes = wM.getParameterTypes();
//判斷參數(shù)不為空,則只有一個(gè)
if(classes != null && classes.length == 1){
//判斷參數(shù)類型
if(classes[0].equals(String.class)){
//調(diào)用set方法,傳參
wM.invoke(obj, "Jack");
//調(diào)用get方法,獲得返回值
String str = (String) rM.invoke(obj);
System.out.println("Name is : " + str);
}
if(classes[0].equals(int.class)){
wM.invoke(obj, 2);
Integer num = (Integer) rM.invoke(obj);
System.out.println("Age is : " + num);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class User {
private String Name;
private int age;
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的java 动态生成getset_通过get、set方法,动态生成对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php用cdn打不开,开启 CDN 后
- 下一篇: 中国电信学院c语言题库,电脑题库试题精编