[Java] Class<T>
阿新 • • 發佈:2022-12-10
類 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
}
}