为了账号安全,请及时绑定邮箱和手机立即绑定

对于.class的问题.

对于.class的问题.

JKWong 2016-04-23 15:51:07
这个课程讲的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();//实例化对象


查看完整回答
1 反对 回复 2016-04-26
  • JKWong
    JKWong
    其实暴力访问是不是为了可以直接访问它的被封装的构造方法?
  • HansonQ
    HansonQ
    对于私有的都可以使用暴力访问
  • JKWong
    JKWong
    我有一个不用暴力访问的方法,不过要结合单例模式的设计方法,加上利用反射调用方法也可以,不过谢谢你提出暴力访问,我试试
  • 1 回答
  • 0 关注
  • 1506 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信