Reflection.java
package reflection;
import java.lang.reflect.Method;
public class Reflection {
private static <T> void test(Class<T> t) {
try {
//Holen Sie sich eine Instanz
Object instance = t.newInstance();
//Methode abrufen
Method method = t.getMethod("test", String.class);
//Methodenausführung
method.invoke(instance, "Beeindruckend");
} catch (ReflectiveOperationException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
test(ReflectionTest.class);
}
}
class ReflectionTest {
public void test(String str) {
System.out.println(str);
}
}
Ergebnis
Beeindruckend
Na, was ist es? Wie der Fernzugriff auf einen PC
Wie der Zugriff auf eine Klasse und der Zugriff auf eine Methode
Es scheint, dass Sie auch private Methoden ausführen können, wenn Sie diese verwenden
Lass es uns versuchen
Ich habe versucht, es privat zu machen.java
class ReflectionTest {
private void test(String str) {
System.out.println(str);
}
}
Ergebnis
java.lang.NoSuchMethodException: reflection.ReflectionTest.test(java.lang.String)
at java.lang.Class.getMethod(Unknown Source)
at reflection.Reflection.test(Reflection.java:14)
at reflection.Reflection.main(Reflection.java:25)
Nein! !! !! Lügner! !! !!
Dies scheint notwendig zu sein.java
package reflection;
import java.lang.reflect.Method;
public class Reflection {
private static <T> void test(Class<T> t) {
try {
//Holen Sie sich eine Instanz
Object instance = t.newInstance();
//Methode abrufen
Method method = t.getDeclaredMethod("test", String.class);
//Für Privatpersonen,Ich werde darauf zugreifen, ich brauche eine Erklärung
method.setAccessible(true);
//Methodenausführung
method.invoke(instance, "Beeindruckend");
} catch (ReflectiveOperationException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
test(ReflectionTest.class);
}
}
class ReflectionTest {
@SuppressWarnings("unused")
private void test(String str) {
System.out.println(str);
}
}
Es scheint, dass Sie "true" in der "setAccessible" -Methode der "Method" -Klasse setzen müssen.
Nun, dieser Typ hat Zugang zur Testklasse und ist privat
Es scheint, dass Sie alles gewaltsam tun können
Ich verstehe nur nicht Es gibt Ausnahmen wie "ReflectiveOperationException"
Sobald Sie einen kleinen Fehler machen, erhalten Sie verschiedene Ausnahmen.
Nun, es ist wirklich ein Stromgeschäft
Recommended Posts