對反射的認知

2021-08-20 10:49:07 字數 1376 閱讀 8037

反射其實是通過class物件來呼叫類裡面的方法(無參無返回,無參有返回,有引數無返回,有引數有返回)或者屬性,反射還可以呼叫私有方法和私有屬性。

反射的使用方法:

system.out.println("-----------------屬性-----------------------");

// 1.得到你的類的物件

class c = class.forname("com.zking.entity.person");

field f = c.getdeclaredfield("pname");

// 設定私有的屬性能夠被訪問

f.setaccessible(true);

system.out.println(f);

// 得到乙個person物件 newinstance 產生乙個新的實列 實列化物件

object person = c.newinstance();

// 賦值

f.set(person, "張三");

// 取值

f.get(person);

system.out.println(f.get(person));

//獲取所有屬性

// system.out.println("-----------------屬性-----------------------");

// class c = class.forname("com.zking.entity.person");

// field fields = c.getdeclaredfields();

// object person = null;

// for (field f : fields) else if ("pname".contains(f.getname())) else if ("***".contains(f.getname()))

// system.out.println(f.get(person));

// }

方法:(無參無返回,無參有返回,有引數無返回,有引數有返回)

// 無參無返回

public void m1()

// 無參有返回

public string m2()

// 有引數無返回

public void m3(integer index, string str, string str1)

// 有引數有返回

public string m4(integer index, string str, string str1)

使用反射可以

增加程式的靈活性。

對volatile的認知

volatile是jvm提供的輕量級同步機制 保證了不同執行緒對變數操作的記憶體可見性 強制執行緒每次讀取時從主記憶體取值 禁止指令重排序 編譯器可能對輸入指令進行執行重排序,各個語句執行的先後順序不一致,但會保證執行結果一致,但是忽略的資料的依賴性 通過在指令間新增記憶體屏障,強制重新整理cpu快...

對單例的認知

最近看到了 單例 這塊,簡單記錄下 單例就是該類只能返回乙個例項。單例所具備的特點 1.私有化的建構函式 2.私有的靜態的全域性變數 3.公有的靜態的方法 單例分為 懶漢式 餓漢式和雙層鎖式 餓漢式 先初始化物件 single類一進記憶體,就已經建立好了物件 public class singlet...

對區塊鏈的認知

區塊鏈技術,也可以叫做區塊鏈儲存技術,是一種新的儲存方式。既然是一種儲存方式,那麼我們可以把區塊鏈和u盤,硬碟,網盤這些抽象為同一類東西。在這一類東西裡面,區塊鏈的儲存介質可以說和網盤最為一致的 網路 但不同的,也是最主要的區別是,網盤是集中儲存,而區塊鏈是分布式。簡單的說,使用網盤,需要把資料儲存...