Imagine, se você pode chamar facilmente um método privado de uma classe, isso significa que seu encapsulamento expirou? Recentemente, eu estava olhando para o mecanismo de reflexão do Java e descobri que ele pode realmente usar o mecanismo de reflexão do Java para chamar métodos privados de outras classes. Quanto ao que isso pode fazer, cabe às opiniões das pessoas. .
Um código de exemplo simples que escrevi é o seguinte:
import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;/** * @author thomaslwq * @version Creation time: Sep 4, 2012 9:53:49 PM * Class Description*/public class ReflectionTest { public static void setObjectColor(Object obj) throws SecurityException, NoSuchMethodException, IlegalargumentException, ilegalacces *** cEpção, invocaçãoTargeTexception {classe cls = obj.getclass (); // obtém método privado do método de classe Método = cls.getDecLaredMethod ("privatemethod", nulo); Method.setAccessible (true); // um erro será relatado sem definir // chamar este método.invoke (obj, null); } public static void main (string args []) lança segurançaexception, ilegalArgumentException, noschmethodException, ilegalacces *** cEpção, invocaçãoTargeTexception {setObjectColor (new MyTest ()); }} // classe de teste mytest {public void setMyTest () {System.out.println ("setMytest"); } / ** Método privado de classe ** / private privatemethod () {System.out.println ("Método privado"); }}O método privado acima (recomendado) que usa o mecanismo de reflexão Java para ligar para a classe é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.