日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 动态生成getset_通过get、set方法,动态生成对象

發布時間:2024/9/27 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 动态生成getset_通过get、set方法,动态生成对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在看Java的反射,把學習的東西整理一下,大家共同研究,有需要改進的地方,請大家指正。

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");

//實例化類

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();

//獲得方法的參數,因為是標準的set方法,所以只取第一個參數

Class[] classes = wM.getParameterTypes();

//判斷參數不為空,則只有一個

if(classes != null && classes.length == 1){

//判斷參數類型

if(classes[0].equals(String.class)){

//調用set方法,傳參

wM.invoke(obj, "Jack");

//調用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;

}

}

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java 动态生成getset_通过get、set方法,动态生成对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。