java涓璱nvoke()鎬庝箞浣跨敤
鍦↗ava涓紝invoke()
鏂规硶鐢ㄤ簬鍔ㄦ€佸湴璋冪敤瀵硅薄鐨勬柟娉曘€傚畠鐨勪娇鐢ㄦ柟娉曞涓嬶細
-
鍒涘缓涓€涓?code>Method瀵硅薄锛屾寚瀹氳璋冪敤鐨勬柟娉曞悕鍜屽弬鏁扮被鍨嬨€傚彲浠ヤ娇鐢?code>Class绫荤殑
getMethod()
鎴?code>getDeclaredMethod()鏂规硶鏉ヨ幏鍙?code>Method瀵硅薄銆?/p> -
璁剧疆
Method
瀵硅薄鐨勫彲璁块棶鎬э紝濡傛灉璋冪敤鐨勬柟娉曟槸绉佹湁鏂规硶锛岄渶瑕佷娇鐢?code>setAccessible(true)鏉ヨ缃彲璁块棶鎬с€?/p> -
浣跨敤
invoke()
鏂规硶璋冪敤鏂规硶锛屼紶閫掑璞″疄渚嬩綔涓虹涓€涓弬鏁帮紝浠ュ強鏂规硶鐨勫弬鏁帮紙濡傛灉鏈夛級浣滀负鍚庣画鍙傛暟銆?/p>
浠ヤ笅鏄竴涓ず渚嬩唬鐮侊紝婕旂ず浜嗗浣曚娇鐢?code>invoke()鏂规硶璋冪敤涓€涓璞$殑鏂规硶锛?/p>
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) throws Exception {
// 鍒涘缓涓€涓狿erson瀵硅薄
Person person = new Person("John", 30);
// 鑾峰彇Person绫荤殑sayHello鏂规硶
Method method = Person.class.getMethod("sayHello");
// 璁剧疆鍙闂€?/span>
method.setAccessible(true);
// 璋冪敤sayHello鏂规硶
method.invoke(person);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
private void sayHello() {
System.out.println("Hello, my name is " + name);
}
}
鍦ㄤ笂闈㈢殑绀轰緥涓紝鎴戜滑鍒涘缓浜嗕竴涓?code>Person绫伙紝骞朵笖瀹氫箟浜嗕竴涓鏈夌殑sayHello
鏂规硶銆傜劧鍚庯紝鎴戜滑浣跨敤getMethod()
鏂规硶鑾峰彇浜?code>Person绫荤殑sayHello
鏂规硶锛屽苟閫氳繃setAccessible(true)
璁剧疆浜嗗彲璁块棶鎬с€傛渶鍚庯紝鎴戜滑浣跨敤invoke()
鏂规硶璋冪敤浜嗚鏂规硶銆?/p>
杈撳嚭缁撴灉涓猴細Hello, my name is John
銆?/p>
相关问答