java的准动态(反射)
生活随笔
收集整理的這篇文章主要介紹了
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 類的對象如何獲取?
代碼如下(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的准动态(反射)的全部內容,希望文章能夠幫你解決所遇到的問題。