反射其實是通過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盤,硬碟,網盤這些抽象為同一類東西。在這一類東西裡面,區塊鏈的儲存介質可以說和網盤最為一致的 網路 但不同的,也是最主要的區別是,網盤是集中儲存,而區塊鏈是分布式。簡單的說,使用網盤,需要把資料儲存...