首頁 > Java > java教程 > 主體

Java中如何取得反射方法?

王林
發布: 2023-04-23 20:16:05
轉載
2034 人瀏覽過

1、取得要反射的方法

取得反射方法時,有兩個方法,getMethod 和 getDeclaredMethod。

class Class {
 @CallerSensitive
 public Method getMethod(String name, Class<?>... parameterTypes)
 throws NoSuchMethodException, SecurityException {
 Objects.requireNonNull(name);
 SecurityManager sm = System.getSecurityManager();
 if (sm != null) {
 // 1. 检查方法权限
 checkMemberAccess(sm, Member.PUBLIC, Reflection.getCallerClass(), true);
 }
 // 2. 获取方法
 Method method = getMethod0(name, parameterTypes);
 if (method == null) {
 throw new NoSuchMethodException(methodToString(name, parameterTypes));
 }
 // 3. 返回方法的拷贝
 return getReflectionFactory().copyMethod(method);
 }
 @CallerSensitive
 public Method getDeclaredMethod(String name, Class<?>... parameterTypes)
 throws NoSuchMethodException, SecurityException {
 Objects.requireNonNull(name);
 SecurityManager sm = System.getSecurityManager();
 if (sm != null) {
 // 1. 检查方法是权限
 checkMemberAccess(sm, Member.DECLARED, Reflection.getCallerClass(), true);
 }
 // 2. 获取方法
 Method method = searchMethods(privateGetDeclaredMethods(false), name, parameterTypes);
 if (method == null) {
 throw new NoSuchMethodException(methodToString(name, parameterTypes));
 }
 // 3. 返回方法的拷贝
 return getReflectionFactory().copyMethod(method);
 }
}
登入後複製

2、在Java5中,提供了for-each循環,從而簡化了對陣列和集合的循環。 Fore-each迴圈可讓您遍歷數組而不需要保留傳統for迴圈中的索引,也不需要在使用迭代器時呼叫while迴圈中的hasNext方法和next方法來遍歷集合。

double[] values = ...;
for(double value : values) {
    // TODO: 处理value
}
 
List<Double> valueList = ...;
for(Double value : valueList) {
    // TODO: 处理value
}
登入後複製

3、得到目前方法的名稱

<span style=
"font-family:Arial;font-size:14px;"
>String methodName = Thread.currentThread().getStackTrace()[
1
].getMethodName(); </span>
登入後複製

以上是Java中如何取得反射方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板