Exception in thread "main" java.lang.IllegalAccessException: Class Class类.ReflectString can not access a member of class Class类.P1 with modifiers "private"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:296)
at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:288)
at java.lang.reflect.Method.invoke(Method.java:491)
at Class类.ReflectString.main(ReflectString.java:99)
如果我们使用反射获取本类中的private修饰的方法我们会发现出现以上非法访问异常,即使设置了权限验证也不行
只能使用以下方法方可解决
getDeclaredMethod():获取本类指定的方法
setAccessible():关闭权限校验
Method test1 = p1Class.getDeclaredMethod("test1", String.class, Integer.class); test1.setAccessible(true); test1.invoke(p1Class.newInstance(),"张三",18);