1. 程式人生 > 其它 >[Java] Class<T>

[Java] Class<T>

類 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
  }
}