獲取類物件的四種方法
阿新 • • 發佈:2020-08-24
獲取Class物件的方法?
getClass .class Class.forName(); ClassLoader
native:本地的原始碼就到頭了,再往下走:就不是java程式碼
在JDK中,主要由以下類來實現Java反射機制,這些類都位於java.lang.reflect包中:
Class類:代表一個類。
Field 類:代表類的成員變數(成員變數也稱為類的屬性)。
Method類:代表類的方法。
Modifier類:代表修飾符。
lConstructor 類:代表類的構造方法。
Array類:提供了動態建立陣列,以及訪問陣列的元素的靜態方法。
obj.getClass();
class屬性
Class.forName();
ClassLoader
Demo1 獲取類物件的四種方式
`package demo1; public class Demo1 { /** * @param args * @throws ClassNotFoundException */ public static void main(String[] args) throwsClassNotFoundException { //得到Class類物件的四種方法 //1. Object obj = new String(); Class clz1 = obj.getClass(); //2. Class clz2 = String.class; //3. Class clz3 = Class.forName("java.lang.String"); //4. ClassLoader cl = ClassLoader.getSystemClassLoader(); Class clz4= cl.loadClass("java.util.ArrayList"); } }
在JDK中,主要由以下類來實現Java反射機制,這些類都位於java.lang.reflect包中:
Class類:代表一個類。
Field 類:代表類的成員變數(成員變數也稱為類的屬性)。
Method類:代表類的方法。
Modifier類:代表修飾符。
Constructor 類:代表類的構造方法。
Array類:提供了動態建立陣列,以及訪問陣列的元素的靜態方法。
反射Student類的所有構造方法
package demo2; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Modifier; public class Demo2 { /** * @param args * @throws NoSuchMethodException * @throws SecurityException * @throws InvocationTargetException * @throws IllegalAccessException * @throws InstantiationException * @throws IllegalArgumentException */ public static void main(String[] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException { // 反射String類的所有構造方法 Class clz = Student.class; System.out.println("所有構造方法"); // Constructor[] cons = clz.getConstructors(); Constructor[] cons = clz.getDeclaredConstructors(); for (Constructor con : cons) { // System.out.println("訪問修飾許可權:" + // Modifier.toString(con.getModifiers())); // System.out.println("方法名:" + con.getName()); // System.out.println("****************************"); System.out.println(Modifier.toString(con.getModifiers()) + " " + con.getName()); } //找無參的構造方法 Student s = new Student(); Constructor con = clz.getDeclaredConstructor(); Object obj = con.newInstance(); System.out.println(obj); //找帶string,int型別引數的構造方法 Student s = new Student("zhangsan",12) con = clz.getDeclaredConstructor(String.class, int.class); obj = con.newInstance("zhangsan", 12); System.out.println(obj); con = clz.getDeclaredConstructor(String.class); } }
雖然以上都是從老鄧的程式碼心得複製過來的,因為我實在不知道寫什麼了,學得一知半解,理解的也不全面,只能到處移植。
我本來是不打算學這個java的,其實也從來沒想過學有關計算機這方面的,可無奈一波三折,誤打誤撞就到了這裡。
沒什麼好說的,我這個人生無大志,不說碌碌無為也但求無過,既然來到了世上就好好走一趟。