反射小结
import operate415.demo.demo1.Str;
import operate427.demo.demo5.Demo1;import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;/*** 反射調(diào)用的大概了解簡單小結(jié)調(diào)用** @author silence*/
public class Silence {public static void main(String[] args) throws Exception {//這兩個(gè)較常用的方法獲取classClass<?> clazz1 = Class.forName("operate427.demo.demo1.Demo1");Class<Demo1> clazz2 = Demo1.class;//-----------------------------------------//都是通過字節(jié)碼引用調(diào)用//帶Declared的是都是屬于私有構(gòu)造,屬于私有的都需要設(shè)置setAccessible(true)//帶S的是獲取所有的方法 屬性 或者構(gòu)造//構(gòu)造方法-----------------------------------//getConstructor()//獲取單個(gè)指定的構(gòu)造方法,需要傳入對應(yīng)的數(shù)據(jù)類型class Integer.class String.class// Constructor<?> constructor = clazz1.getConstructor();//通過 constructor.newInstance() 創(chuàng)建對象 這里需要傳入實(shí)參//方法-----------------------------------// clazz1.getMethod()//獲取單個(gè)方法,需要傳入方法名 “method”, 參數(shù)類型.class//Method method = clazz1.getMethod("method", String.class);//屬于私有的都需要設(shè)置setAccessible(true)//通過單個(gè)方法引用的invoke方法調(diào)用方法 method.invoke() 這里需要傳入對象引用調(diào)用,有參數(shù)需要傳入實(shí)參//屬性-----------------------------------//獲取單個(gè)屬性需要傳入屬性名稱//Field field = clazz1.getField("");// 屬于私有的都需要設(shè)置setAccessible(true)//field.set(new Object(),""); set是設(shè)置值,需要傳入需要設(shè)置對象的地址引用// String str = (String) field.get(""); get獲取值}
}
總結(jié)
- 上一篇: ATKOSD.exe是什么进程 ATKO
- 下一篇: 键盘录入一个字符串,判断是否是对称字符串