Reflection.java
package reflection;
import java.lang.reflect.Method;
public class Reflection {
	
	private static <T> void test(Class<T> t) {
		
		try {
			//Obtenez une instance
			Object instance = t.newInstance();
			
			//Get méthode
			Method method = t.getMethod("test", String.class);
			
			//Exécution de la méthode
			method.invoke(instance, "sensationnel");
			
		} 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);
	}
}
résultat
sensationnel
Bien qu'est-ce que c'est? Comme accéder à un PC à distance
Comme accéder à une classe et accéder à une méthode
Il semble que vous puissiez également exécuter des méthodes privées si vous utilisez ceci
essayons
J'ai essayé de le rendre privé.java
class ReflectionTest {
	
	private void test(String str) {
		System.out.println(str);
	}
}
résultat
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)
Non! !! !! menteur! !! !!
Cela semble nécessaire.java
package reflection;
import java.lang.reflect.Method;
public class Reflection {
	
	private static <T> void test(Class<T> t) {
		
		try {
			//Obtenez une instance
			Object instance = t.newInstance();
			
			//Get méthode
			Method method = t.getDeclaredMethod("test", String.class);
			
			//Pour privé,J'y accéderai, j'ai besoin d'une déclaration
			method.setAccessible(true);
			
			//Exécution de la méthode
			method.invoke(instance, "sensationnel");
			
		} 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);
	}
}
Il semble que vous deviez définir true dans la méthode setAccessible de la classe Method.
Eh bien, ce gars a accès à la classe de test et privé
Il semble que vous puissiez tout faire de force
Je ne comprends tout simplement pas Il y a des exceptions comme ReflectiveOperationException
Dès que vous faites une légère erreur, vous obtiendrez diverses exceptions.
Eh bien, c'est vraiment une affaire d'énergie
Recommended Posts