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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

该懂的反射小操作

發布時間:2025/3/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 该懂的反射小操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該懂的反射小操作

相關系列

java 的反射機制


文章目錄

  • 該懂的反射小操作
    • 相關系列
  • 前言
  • 代碼:
    • 實體類
    • 測試類
  • つづく


前言

這里就不說哪些沒用的了,直接干貨,帶你秒懂動態操作


代碼:

實體類

public class User {public int userid;private String userName;private String password;public int getUserid() {return userid;}public void setUserid(int userid) {this.userid = userid;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public User(int userid, String userName, String password) {super();this.userid = userid;this.userName = userName;this.password = password;}public User() {super();}}

測試類

Test2

import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method;public class Test2 {public static void main(String[] args) throws Exception {String pathString = "com.bjsxt.pojo.User"; // 獲取類的名稱Class class1 = Class.forName(pathString);System.out.println("類的全名稱:"+class1.getName());System.out.println("類的名稱:"+class1.getSimpleName());System.out.println("--------------------------------------------");// 獲取父類的Class對象Class class2 = class1.getSuperclass();System.out.println(class2.getName());System.out.println(class2.getSimpleName());System.out.println("--------------------------------------------");// 獲取類的屬性Field field = class1.getField("userid");//獲取單個屬性,只能獲取公共的屬性System.out.println(field);Field[] fields = class1.getFields();//獲取所有公共屬性;System.out.println(fields.length);Field[] fields2 = class1.getDeclaredFields();//獲取所有的屬性;System.out.println(fields2.length);for(Field field2 : fields2) {System.out.println(field2);//調用了toString方法}System.out.println();for(Field field2 : fields2) {//獲取屬性的每個部分的信息System.out.println(field2.getModifiers()+"\t"+field2.getType()+"\t"+field2.getName());}System.out.println("---------------------------------------------------");// 獲取類的方法信息Method[] methods = class1.getDeclaredMethods();System.out.println(methods.length);for(Method method : methods) {System.out.println(method);}System.out.println();for(Method method : methods) {//獲取屬性的每個部分的信息System.out.println("方法的權限"+method.getModifiers());System.out.println("返回值類型"+method.getReturnType());System.out.println("方法的名稱:"+method.getName()); // 獲取方法的參數Class[] methodParam = method.getParameterTypes();for(Class mp : methodParam ) {System.out.println("方法的參數類型:"+mp.getTypeName()+"\t");}System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");}// 用于私有的屬性,并且有公有的取值賦值方法以及無參構造方法這樣的類叫做JavaBean// 獲取類的構造器Constructor[] constructors = class1.getConstructors();for(Constructor constructor : constructors) {System.out.println(constructor);}// 獲取指定的構造方法Constructor constructor = class1.getConstructor(null);System.out.println(constructor);Constructor constructor2 = class1.getConstructor(int.class,String.class,String.class);System.out.println(constructor2);}}

Test3

import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method;import com.bjsxt.pojo.User;public class Test3 {public static void main(String[] args) throws Exception { // 獲取Class對象Class class1 = Class.forName("com.bjsxt.pojo.User");// 得到無參構造方法的對象Constructor constructor = class1.getConstructor(null); // 通過無參構造方法的對象,創建user類的對象;User user =(User) constructor.newInstance();// 獲取指定的屬性,動態操作屬性Field field = class1.getDeclaredField("userid"); // 這個屬性無需做安全檢查,直接訪問field.setAccessible(true);field.set(user,1001);System.out.println("取出userId這個屬性的值:"+field.get(user));// 動態操作方法,獲取指定的方法Method method = class1.getDeclaredMethod("setUserName", String.class); // 執行該方法method.invoke(user, "張三");Method method2 = class1.getDeclaredMethod("getUserName",null);System.out.println(method2.invoke(user));}}

つづく

接下來會不斷更新關于反射的小內容,最后將會以一個小項目多為結尾敬請期待;
感覺收看,如果幫到您,點個贊,關個注,評個論唄,葵花在這里感激不盡!!!

總結

以上是生活随笔為你收集整理的该懂的反射小操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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