类 Class
类 Class<T>
T:Class对象建模的类的类型
除了类使用Class类描述外,一个类中的构造函数、成员变量和一般函数,都是一种事物,java中都会使用一个类描述:
构造函数:Constructor类;
成员变量:Field类;
一般函数:Method类;
获取Class对象
第一种方式:通过对象的getClass函数获取
.getClass()
第二种方式:通过类型的静态成员变量class获取
.class
第三种方式:使用Class类的静态函数,通过表示某种类型的字符串获取
Class.forName("java.lang.String");//全路径
Class对象的使用
获取和调用构造函数
getConstructor() //获得指定的公共构造方法
getConstructors() //返回所有公共构造方法
getDeclaredConstructor() //获得指定的构造方法
getDeclaredConstructors() //返回所有构造方法
使用反射破坏单例
/*
1.获取类
2.获取构造函数
3.修改私有函数的访问限制
4使用此构造函数创建对象
*/
Class clazz = Single.class;
Constructor c = clazz.getDeclaredConstructor();
c.setAccessible(true);
Single s = (Single)c.newInstance();
预防 使用反射破坏单例
/*
在构造函数中判断此类的对象是否存在
*/
public class Single{
private Single(){
if(s!=NUll){
//对象已存在
} }
//内部创建对象s
private static Single s = new Single();
//拿到s
public static Single getInstance(){
return s
}
}
标签:Java,构造方法,class,获取,Single,Class,构造函数
From: https://www.cnblogs.com/NetUSA/p/16971960.html