Heim  >  Artikel  >  Java  >  Wie bekomme ich eine Reflexionsmethode in Java?

Wie bekomme ich eine Reflexionsmethode in Java?

王林
王林nach vorne
2023-04-23 20:16:052002Durchsuche

1. Holen Sie sich die Methode, die reflektiert werden soll

Beim Abrufen der Reflexionsmethode gibt es zwei Methoden: getMethod und 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. In Java5 gibt es eine for-each-Schleife, die das Schleifen von Arrays und Sammlungen vereinfacht. Fore-each-Schleifen ermöglichen es Ihnen, über ein Array zu iterieren, ohne den Index wie in einer herkömmlichen for-Schleife beizubehalten oder die hasNext-Methode und die next-Methode in einer while-Schleife aufzurufen, wenn Iteratoren zum Durchlaufen der Sammlung verwendet werden.

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

3. Holen Sie sich den Namen der aktuellen Methode

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

Das obige ist der detaillierte Inhalt vonWie bekomme ich eine Reflexionsmethode in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen