1. 程式人生 > 實用技巧 >Java的反射機制3

Java的反射機制3

對於每一個類在載入時都會有一個唯一的Class物件,Class物件中包含了所有需要動態獲取的類的資訊, 所以Class類是Reflection API 中的核心類 。

獲取Class物件的方法?

getClass

.class

Class.forName();

ClassLoader

`
```
native:本地的
原始碼就到頭了,再往下走:就不是java程式碼
```

`對於每一個類在載入時都會有一個唯一的Class物件,Class物件中包含了所有需要動態獲取的類的資訊, 所以Class類是Reflection API 中的核心類 。

獲取Class物件的方法?

getClass


.class

Class.forName();

ClassLoader
```
native:本地的
原始碼就到頭了,再往下走:就不是java程式碼
``

在JDK中,主要由以下類來實現Java反射機制,這些類都位於java.lang.reflect包中:

Class類:代表一個類。

Field 類:代表類的成員變數(成員變數也稱為類的屬性)。

Method類:代表類的方法。

Modifier類:代表修飾符。

lConstructor 類:代表類的構造方法。

Array類:提供了動態建立陣列,以及訪問陣列的元素的靜態方法。



`

在JDK中,主要由以下類來實現Java反射機制,這些類都位於java.lang.reflect包中:

Class類:代表一個類。

Field 類:代表類的成員變數(成員變數也稱為類的屬性)。

Method類:代表類的方法。

Modifier類:代表修飾符。

lConstructor 類:代表類的構造方法。

Array類:提供了動態建立陣列,以及訪問陣列的元素的靜態方法。

程式碼:

package Demo2;

import java.io.File;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Arrays;

public class Demo2 {
public static void main(String[] args) {
Student stu=new Student();
Class cs1=stu.getClass();
Field[] fields=cs1.getDeclaredFields();
System.out.println(Arrays.toString(fields));
// 通過類物件獲得物件所對應的類裡面的屬性,通過給定的引數
try {
Field field=cs1.getDeclaredField("name");
Field[] field2=cs1.getDeclaredFields();
System.out.println("field2:"+field2);
System.out.println(Arrays.toString(field2));

// Method
try {
Method method=cs1.getMethod("test",String.class);
System.out.println("method"+method);
Method[] methods=cs1.getMethods();
System.out.println(methods);
System.out.println(Arrays.toString(methods));
System.out.println("******************");
// 4.modeofiler
int num=cs1.getModifiers();
System.out.println(num);
// 5.Construtor
Constructor con=cs1.getConstructor(String.class);
System.out.println(con);
// 6.Construtor
Constructor[] cons=cs1.getConstructors();
System.out.println(cons);
System.out.println("***********");
System.out.println(Arrays.toString(cons));
// 7



} catch (NoSuchMethodException e) {
e.printStackTrace();
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
總結:心態放平,不要生氣