-
透過 Class 物件的 newInstance() 方法
package com.lut.study_java_demo1;
import java.util.Scanner;
/**
* @author Zhou
* @desc 反射的使用
* @date 2024/8/7 16:13
*/
public class _21_new_reflect {
public static void main(String[] args) throws Exception{
String a=new Scanner(System.in).nextLine();
Class<?> c=Class.forName("com.lut.study_java_demo1.Reflect");
Reflect reflect=(Reflect)c.newInstance();
reflect.showString(a);
}
}
class Reflect{
public Reflect(String a){
System.out.println(a);
}
void showString(String s){
System.out.println(s);
}
}首先使用絕對路徑建立一個Reflect類的Class物件,然後透過Reflect類的Class物件建立了一個該類的例項,將地址賦給引用變數reflect,透過引用變數呼叫Reflect類的方法,實現該方法。
-
透過 Constructor (呼叫無參構造方法)物件的 newInstance() 方法
package com.lut.study_java_demo1;
import java.util.Scanner;
/**
* @author Zhou
* @desc 反射的使用
* @date 2024/8/7 16:13
*/
public class _21_new_reflect {
public static void main(String[] args) throws Exception{
String a=new Scanner(System.in).nextLine();
Class<?> c=Class.forName("com.lut.study_java_demo1.Reflect");
//獲取一個沒有引數的構造方法
Constructor constructor=c.getConstructor();
Reflect reflect=(Reflect)constructor.newInstance();
reflect.showString(a);
}
}
class Reflect{
public Reflect(String a){
System.out.println(a);
}
void showString(String s){
System.out.println(s);
}
} -
透過 Constructor (呼叫有參構造方法)物件的 newInstance() 方法
package com.lut.study_java_demo1;
import java.util.Scanner;
/**
* @author Zhou
* @desc 反射的使用
* @date 2024/8/7 16:13
*/
public class _21_new_reflect {
public static void main(String[] args) throws Exception{
String a=new Scanner(System.in).nextLine();
Class<?> c=Class.forName("com.lut.study_java_demo1.Reflect");
//獲取一個可以是String型別引數的構造方法
Constructor constructor=c.getConstructor(String.class);
Reflect reflect=(Reflect)constructor.newInstance("Hello");
reflect.showString(a);
}
}
class Reflect{
public Reflect(String a){
System.out.println(a);
}
void showString(String s){
System.out.println(s);
}
} -
獲取類的成員變數的資訊
Field[] fields = c.getDeclaredFields();
-
獲得類方法
Method[] methods = c.getDeclaredMethods();
-
獲得建構函式
Constructor[] constructors = c.getDeclaredConstructors();
如何使用反射
相關文章
- 如何提高使用Java反射的效率?Java反射
- 來看看如何在 C# 中使用反射C#反射
- 反射基本使用反射
- 如何使用天津拓航科技反射記憶體卡反射記憶體
- 如何使用dsx2-5000 OTDR光時域反射模組反射
- java 反射簡單使用Java反射
- 急求:如何使用反射機制解決這個問題!!!???反射
- 反射-通過反射獲取私有構造方法並使用反射構造方法
- 反射-通過反射獲取成員變數並使用反射變數
- Go 使用反射匯出 ExcelGo反射Excel
- 使用反射為特性賦值反射賦值
- 反射-通過反射獲取無參構造方法並使用反射構造方法
- 反射-通過反射獲取帶參構造方法並使用反射構造方法
- JVM是如何實現反射的JVM反射
- 詳解 PHP 反射的基本使用PHP反射
- Java註解與反射的使用Java反射
- 反射的概念 和基本使用(一)反射
- java反射——反射AnnotationJava反射
- js 物件反射使用程式碼例項JS物件反射
- 02 使用配置檔案+反射實現反射
- 如何用反射呼叫泛型類的方法反射泛型
- Java反射—初探反射基礎Java反射
- Java反射與反射優化Java反射優化
- 反射記憶體卡的使用場景反射記憶體
- (更新,已反射hook到onActivityResult)如何避免使用onActivityResult,以提高程式碼可讀性反射Hook
- 反射反射
- 反射如何獲取函式的引數名反射函式
- 列舉單例模式如何防止反射攻擊單例模式反射
- C#中使用反射的使用實現和效能分析(轉)C#反射
- 使用ImpromptuInterface反射庫方便的建立自定義DfaGraphWriterUI反射
- 使用反射建立窗體物件時,物件為NULL反射物件Null
- 打造強大的BaseModel(4):使用Swift反射Swift反射
- java反射(3)在工廠模式中的使用Java反射模式
- 使用反射-動態建立物件及呼叫物件方法反射物件
- 【Java 反射學習】Java 反射基礎Java反射
- [Java 反射學習] Java 反射基礎Java反射
- 【Java面試指北】反射(1) 初識反射Java面試反射
- php反射PHP反射