package com.my;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import static java.lang.System.out;
class A
{
private int num;
private A()
{
num = 0;
System.out.println("A()");
}
private A(int i)
{
System.out.println("A(int i)");
}
public void dosth()
{
System.out.println("dosth()" + " " + num);
}
private void dointer()
{
out.println("dointer()" );
}
}
public class Main
{
//A a;
public static void main(String[] args) throws Exception
{
//A a = new A();
Constructor<?>[] con = A.class.getDeclaredConstructors();
System.out.println(con[0]);
System.out.println(con[1]);
con[0].setAccessible(true);
A a = (A)con[0].newInstance();
a.dosth();
con[1].setAccessible(true);
A b = (A)con[1].newInstance(1);
b.dosth();
Field f = A.class.getDeclaredField("num");
f.setAccessible(true);
f.set(a, 11);
a.dosth();
Constructor<?> conSingle = A.class.getDeclaredConstructor();
conSingle.setAccessible(true);
A c = (A) conSingle.newInstance();
c.dosth();
Method m = A.class.getDeclaredMethod("dointer");
m.setAccessible(true);
m.invoke(a);
m.invoke(b);
}
}
使用反射,访问私有构造方法,域变量
最新推荐文章于 2022-02-25 21:57:21 发布