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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java的准动态(反射)

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

java 的反射機制

相關系列

該懂的反射小操作


文章目錄

  • java 的反射機制
    • 相關系列
  • 前言
  • 一、反射機制
  • 二、反射機制的常見操作
  • java.lang.Class 類
  • つづく


前言

動態語言
在程序運行時,可以改變程序的結構或變量的類型。
典型的動態語言”Python、ruby、JavaScrip;
C,C++,Java 不是動態語言,但具有一定的動態性,可以稱為”準動態語言”,具備類似動態語言的特性。


一、反射機制

程序在運行的過程中加載一些“只知道相關名字”的類,以下代碼,在程序運行時加載 User 類。Class c=Class.forName(“com.bjsxt.reflect.User”);
Class.forName()可以讓我們在運行時再決定加載什么樣的類,字符串傳入什么類,我就加載什么類,完全和源代碼無關,這就是“動態性”。

二、反射機制的常見操作

  • 動態加載類、動態獲取類的信息(屬性、方法、構造器)
  • 動態構造對象
  • 動態調用類和對象的任意方法
  • 動態調用和處理屬性
  • 獲取泛型信息
  • 處理注解
  • java.lang.Class 類

    java.lang.Class 類是反射(Reflection)的根源。

    Class 類的對象如何獲取?

  • 運用 getClass()
  • 運用.class 語法
  • 運用 Class.forName()(最常被使用)
  • 代碼如下(Class對象獲取):

    創建實體類

    public class User {private 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();}}

    測試類

    import com.bjsxt.pojo.User;public class Test {public static void main(String[] args) throws ClassNotFoundException {System.out.println(int.class);System.out.println(void.class);int[] arrA = new int[10];int[] arrB = new int[30]; // 維數相同類型相同的數組共享同一個Class對象System.out.println(arrA.getClass()==arrB.getClass());/*同一個類N多個對象,共享同一個Class對象*/User user = new User();User user2 = new User();System.out.println(user.getClass()==user2.getClass());/** 獲取Class對象的三種方式*/ // 通過對象的getClass()方法獲取;Class class1 = user.getClass(); // 通過字節碼文件獲得Class class2 = User.class; // 通過Class類的靜態方法獲取(最常用的方法)Class class3 = Class.forName("com.bjsxt.pojo.User");System.out.println((class1==class2)+"\t"+(class2==class3));} }

    輸出結果

    つづく

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

    總結

    以上是生活随笔為你收集整理的java的准动态(反射)的全部內容,希望文章能夠幫你解決所遇到的問題。

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