一、有下面的类信息:
public class TestAccessibleObject {
private String name;
private TestAccessibleObject() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这个类是私有构造器,除了在本类中创建这个类的对象外,没有其它方式可以创建这个类的对象了。下面的程序是在这个类的外部创建这个类的对象:
public class Test {
public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Constructor[] cs = TestAccessibleObject.class.getDeclaredConstructors();
AccessibleObject.setAccessible(cs, true);
System.out.println(cs.length);
for ( Constructor c : cs) {
System.out.println(c.isAccessible());
TestAccessibleObject t = (TestAccessibleObject)c.newInstance();
t.setName("hongboliu");
System.out.println(t.getName());
}
}
}