Heim > Java > javaLernprogramm > Hauptteil

Wie bekomme ich eine Reflexionsmethode in Java?

王林
Freigeben: 2023-04-23 20:16:05
nach vorne
2051 Leute haben es durchsucht

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);
 }
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage