通過反射動態呼叫類的靜態方法和例項方法

2022-09-13 05:09:11 字數 2262 閱讀 1290

1

mport j**a.lang.reflect.constructor;

2import

j**a.lang.reflect.method;34

5public

class

callmethod else

);33

system.out

34 .println("constructor 的 newinstance() 方法建立帶引數的testclass例項: "

35 +objecta.tostring());36}

37}3839

40//

獲取所有方法

41 method methods =testclass.getmethods();

42//

獲取某個特定的無引數的方法

43 method saddmethod1 = testclass.getmethod("sadd", null

);44 method addmethod1 = testclass.getmethod("add", null

);45

//獲取某個特定的有引數的方法

46 method saddmethod2 = testclass.getmethod("sadd", new

class );

48 method addmethod2 = testclass.getmethod("add", new class );

5051

52//

呼叫不帶引數的靜態方法

53int result = ((integer) saddmethod1.invoke(null, null

)).intvalue();

54 system.out.println("呼叫不帶引數的靜態方法sadd: " +result);

55//

呼叫帶引數的靜態方法

56 result = ((integer) saddmethod2.invoke(null, new

object )).intvalue();

58 system.out.println("呼叫帶引數30, 70的靜態方法sadd: " +result);

5960

61 objecta =(testclass) testclass.newinstance();

62//

呼叫不帶引數的例項方法

63 result = ((integer) addmethod1.invoke(objecta, null

)).intvalue();

64 system.out.println("呼叫不帶引數的例項方法add: " +result);

65//

呼叫帶引數的例項方法

66 result = ((integer) addmethod2.invoke(objecta, new

object )).intvalue();

68 system.out.println("呼叫帶引數130, 170的例項方法add: " +result);

6970

//不能訪問私有方法

71//

method sub = testclass.getmethod("sub", null);

72//

system.out.println(sub.invoke(objecta, null));73}

7475

//測試類

76class

testclass

88//

帶引數的構造方法

89public testclass(int a, int

b) 93

94//

靜態方法,實現add功能

95public

static

intsadd()

98public

static

int sadd(int a, int

b) 101

//例項方法,實現add功能

102public

intadd()

105public

int add(int a, int

b) 108

public

string tostring()

111//

私有方法

112private

intsub()

115}

116 }

C 通過反射類動態呼叫DLL方法

個人覺得 反射 就是能按照規定 微軟.net 動態訪問特定程式集中物件的工具.網上找的 例子 使用反射方 using system using system.collections.generic using system.linq using system.text using system.re...

使用反射呼叫類靜態方法

呼叫靜態的方法 assembly asm assembly.load infosystem 命名空間 type t asm.gettype infosystem.sqlquery 命名空間加型別名稱 sqlquery sqlquery t.invokemember getinstance bindi...

C 通過反射呼叫類及方法

反射有個典型的應用,就是選單的動態載入,原理就是通過反射呼叫某個窗體 類 下面演示python基礎教程 一下通過反射呼叫類及方法 1 新建乙個類,命名為 reflectionhelper,如下 region 建立物件例項 建立物件例項 物件型別 程式集名稱 命名空間 類名 public static...