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