Imagínense, si puede llamar fácilmente un método privado de una clase, ¿significa que su encapsulación ha expirado? Recientemente, estaba mirando el mecanismo de reflexión de Java y descubrí que en realidad puede usar el mecanismo de reflexión de Java para llamar a métodos privados de otras clases. En cuanto a lo que esto puede hacer, depende de las opiniones de las personas. .
Un código de ejemplo simple que escribí es el siguiente:
import java.lang.reflect.invocationTargetException; import java.lang.reflect.method;/** * @author Thomaslwq * @version Creation Time: 4 de septiembre de 2012 9:53:49 PM * Class Descripción */Public Class ClassTest {Public Static SetObjectColor (Object OBJ) Showing SecurityException, NOSTECTECTECTECTECTECTECTECT, NOSUCTO, NOSUCTIMACIÓN, PublicCoidException, NOSUCTECTECTECTECTECTOMOUCTMOUCTIVE, OBJETECTECTECTECTECTECTECTECHECHECHECHECHECTES, OBJECTMECT. IlegalargumentException, ilegalacces *** ception, invocationTargetException {class cls = obj.getClass (); // Obtener método privado del método de clase = cls.getDeClaredMethod ("privateMethod", null); método.setAccessible (verdadero); // se informará un error sin configurar // llamar a este método.invoke (obj, null); } public static void main (string args []) lanza SecurityException, ilegalargumentException, nosuchmethodexception, ilegalacces *** ception, invocationTargetException {setObjectColor (new mytest ()); }} // Test Clase MyTest {public void setMyTest () {System.out.println ("setMyTest"); } / ** Método privado de clase ** / private void privateMethod () {System.out.println ("Método privado"); }}El método privado anterior (recomendado) que utiliza el mecanismo de reflexión Java para llamar a la clase es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.