詳述反射中的方法

2021-09-26 08:16:58 字數 1476 閱讀 9019

反射系列傳送門

如何獲取class類物件

詳述反射中的構造方法

詳述反射中的普通方法(本篇)

詳述反射中的屬性

現有學生類如下:

public class student 

private int dohousework(int a,string scores)

}

1、獲取所有public級別的方法,包括其父類

注意:getmethods()方法返回的是乙個method型別的陣列,存放有本類中和父類中訪問許可權為public的普通方法的例項化物件。

public class test 

}}

2、獲取本類中的方法

public class test 

}}

1、獲取所在類

public class test  catch (exception e) 

}}

2、獲取訪問控制許可權

public class test  catch (exception e) 

}}

3、獲取返回值型別

public class test  catch (exception e) 

}}

4、獲取引數列表資料型別

public class test 

} catch (exception e)

}}

使用例項物件.invoke(object obj, object... args)方法建立宣告普通方法的新物件。

注意:反射中方法的呼叫不區分靜態與非靜態,統一使用物件呼叫方法。

public class test );

system.err.println(object);//列印結果為1

} catch (exception e)

}}

如果普通方法使用private修飾那麼就需要使用getdeclaredmethod()方法建立普通方法物件,並且需要使用例項化物件.setaccessible(boolean flag)方法,設定呼叫建構函式時忽略訪問許可權的影響(true表示忽略,false表示不忽略)

public class test );

system.err.println(object);//列印結果為2

} catch (exception e)

}}

反射中屬性的用法

首先自定義屬性繼承 system.attribute attributeusage attributetatget.all,allowmultpie true,inherited false 關於自定義屬性的約束 作用範圍 可否多次設定 可否繼承 public class myattribute a...

golang反射中函式和方法的呼叫

眾所周知,golang中的函式是可以像普通的int float等型別變數那樣作為值的,例如 package main import fmt func hello func main prints hello world 既然函式可以像普通的型別變數一樣可以的話,那麼在反射機制中就和不同的變數一樣的,...

C 基礎加固 三 呼叫反射中的方法

呼叫反射型別中的函式一種是 使用 動態型別dynamic直接呼叫,這裡對這種方法不深究 注意 反射查詢 泛型類的時候 需要指定 佔位符 如 var generictype dll.gettype tryref.genericcls 1 這是有乙個型別引數的情況 但是 獲取泛型方法不能新增佔位符 直接...