一、有下面的类信息:
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());
}
}
}
分享到:
相关推荐
我一直以为类的私有构造函数、属性、方法除了类自身其他类是无法访问的,前几天正好学习Spring框架,在学习Spring框架基础 Bean包时,写了一个简单的例子,类似如下: package study.spring.bean; public class ...
一般情况下,我们并不能对类的私有字段进行操作,利用反射也不例外,但有的时候,例如要序列化的时候,我们又必须有能力去处理这些字段,这时候,我们就需要调用AccessibleObject上的setAccessible()方法来允许这种...
它是的,具有以下附加功能: 一个TypeResolver ,允许在复杂的GraphQL类型定义之间轻松相互依赖AccessibleObject和IterableAccessibleObject包装器,可以将任意对象公开给GraphQL API 一个StandardController ,它...
类,在 J2SE 1.2 中添加了反射性修改对象的能力。) Microsoft Windows 平台上的 JIT(Just In Time)编译器,由赛门铁克为 JavaSoft 制作 源自 Taligent 的国际化和 Unicode 支持 Java 2 特性(GA 1998 年 12 月) ...
用法将此库包含在您的leiningen配置文件或deps.edn别名中,以便可在GraalVM native-image的类路径上使用。 重要的: 使用正确的GraalVM版本修饰符:例如graalvm-20.3.0 。 修改器必须与您使用的GraalVM nat