private void ceshi(int a){ System.out.println("0000000000"); }
ceshi a=new ceshi(); Class c=a.getClass(); try { Method m=c.getMethod("ceshi",int.class); m.invoke(a,1); }catch (Exception e){ e.printStackTrace(); }
package com.herman.reflect; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class ClassDemo03 { public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { A a = new A(); Class<? extends A> aClass = a.getClass(); Method self = aClass.getDeclaredMethod("self"); self.setAccessible(true); //暴力反射 self.invoke(a); } } class A { public void printf(String a) { System.out.println("printf...." + a); } private void self() { System.out.println("Access denied!"); } }
首先你要明白它的访问权限,了解后,根据相应权限用get方法就行
setAccessible
我已经通过度娘知道答案了。可以获取
我也想问,应该是不行的吧,如果可以用反射获得private方法太不安全了,那public和private一点区别也没了