这个课程讲的Class类实例对象的方法时,第一种就是Class<?>cs=Foo.class,其实这个.class是一个静态变量吗?因为他可以直接用类名调取?还有对于一些采用单例设计模式,我们怎样运用反射取得某个类实例对象呢?
1 回答
已采纳
HansonQ
TA贡献223条经验 获得超56个赞
public class A{
private static A a = new A();
private A(){};//私有化构造函数
public A getSingleton(){
return a;
}
}
//上面这个就是简单的单例
我们知道反射可以反射出一个类的任意构造方法。
对应公共的构造方法我们可以直接利用但是对于私有的构造函数,我们需要取消代码校验(也就是暴力访问)
Class<A> a = A.class;//静态变量(没深入想过,一般是不会使用这个这个方法)
Class<A> clazz = Class.forName("A类的权限路径");//这种用的比较多
Constructor cons = clazz.getDeclaredConstructor();//获得私有的构造函数
cons.setAccessible(true);//暴力访问
Object object = cons.newInstance();//实例化对象添加回答
举报
0/150
提交
取消
