Java鈥嬩腑Method绫荤殑invoke()鏂规硶鎬庝箞浣跨敤
鍦↗ava涓紝Method绫荤殑invoke()鏂规硶鐢ㄤ簬璋冪敤鐗瑰畾瀵硅薄鐨勬柟娉曘€傚畠鐨勪娇鐢ㄦ柟寮忓涓嬶細
-
棣栧厛锛岄€氳繃鍙嶅皠鑾峰彇瑕佽皟鐢ㄧ殑鏂规硶瀵硅薄銆傚彲浠ヤ娇鐢–lass绫荤殑getDeclaredMethod()鏂规硶鎴杇etMethod()鏂规硶鏉ヨ幏鍙栨柟娉曞璞★紝杩欎袱涓柟娉曠殑鍖哄埆鍦ㄤ簬getDeclaredMethod()鏂规硶鍙互鑾峰彇鎵€鏈夎闂潈闄愮殑鏂规硶锛岃€実etMethod()鏂规硶鍙兘鑾峰彇public璁块棶鏉冮檺鐨勬柟娉曘€?/p>
-
鍒涘缓瑕佽皟鐢ㄦ柟娉曠殑瀹炰緥瀵硅薄銆傚鏋滄柟娉曟槸闈欐€佹柟娉曪紝鍒欏彲浠ヤ娇鐢╪ull浣滀负瀹炰緥瀵硅薄锛涘鏋滄柟娉曟槸闈為潤鎬佹柟娉曪紝鍒欓渶瑕佷娇鐢ㄦ柟娉曟墍灞炵被鐨勫疄渚嬪璞°€?/p>
-
璋冪敤Method绫荤殑invoke()鏂规硶鏉ユ墽琛屾柟娉曘€傝鏂规硶鎺ユ敹涓や釜鍙傛暟锛氱涓€涓弬鏁版槸瀹炰緥瀵硅薄锛岀浜屼釜鍙傛暟鏄紶閫掔粰鏂规硶鐨勫弬鏁般€傚鏋滄柟娉曟病鏈夊弬鏁帮紝鍒欏彲浠ヤ紶閫抧ull鎴栦竴涓暱搴︿负0鐨勬暟缁勩€?/p>
涓嬮潰鏄竴涓ず渚嬩唬鐮侊紝婕旂ず浜嗗浣曚娇鐢∕ethod绫荤殑invoke()鏂规硶鏉ヨ皟鐢ㄤ竴涓柟娉曪細
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) throws Exception {
// 鑾峰彇鏂规硶瀵硅薄
Class<?> clazz = MyClass.class;
Method method = clazz.getDeclaredMethod("myMethod", String.class);
// 鍒涘缓瀹炰緥瀵硅薄
MyClass instance = new MyClass();
// 璋冪敤鏂规硶
Object result = method.invoke(instance, "Hello World");
// 杈撳嚭缁撴灉
System.out.println(result);
}
}
class MyClass {
public String myMethod(String input) {
return "You entered: " + input;
}
}
鍦ㄤ笂闈㈢殑绀轰緥涓紝鎴戜滑棣栧厛浣跨敤getDeclaredMethod()鏂规硶鑾峰彇浜嗗悕涓?quot;myMethod"鐨勬柟娉曞璞°€傜劧鍚庯紝鎴戜滑鍒涘缓浜哅yClass鐨勫疄渚嬪璞★紝骞朵娇鐢╥nvoke()鏂规硶鏉ヨ皟鐢╩yMethod鏂规硶锛屽苟浼犻€掍簡涓€涓瓧绗︿覆鍙傛暟"Hello World"銆傛渶鍚庯紝鎴戜滑灏嗘柟娉曠殑杩斿洖鍊兼墦鍗板埌鎺у埗鍙颁笂銆?/p>
闇€瑕佹敞鎰忕殑鏄紝invoke()鏂规硶鐨勮繑鍥炲€兼槸涓€涓狾bject绫诲瀷锛屽洜姝ら渶瑕佹牴鎹疄闄呮儏鍐佃繘琛岀被鍨嬭浆鎹€傚彟澶栵紝濡傛灉鏂规硶鎶涘嚭浜嗗紓甯革紝invoke()鏂规硶涔熶細灏嗗紓甯告姏鍑猴紝闇€瑕佽繘琛岀浉搴旂殑寮傚父澶勭悊銆?/p>
相关问答