java深入

靜態導入
overLoad
基本數據類型的自動裝箱和拆箱
如果數字在一個字節之內-128--127,這個數會被緩存起來   
享元模式(flyweight):很多小的對象有很多相同的屬性,就把他們變成一個對象,不同的屬性變成方法的參數,
枚舉:每一個枚舉元素都是一個對象
所有的方法都要在枚舉元素之後,枚舉元素後加一對括號,使用構造方法
枚舉內部實現抽象方法
反射
Class類
三種得到類的字節碼的三種方式
類名.class
對象.getClass
Class.forName():返回類的字節碼
字節碼在java虛擬機裏 直接返回
未存在的  通過類加載器緩存到虛擬機裏
相同類的字節碼只有一份
九個預定義Class實例對象
參看Class.isPermitive
反射:把java類中的各種成分映射成相應的java類
Constructor類代表某個類中的一個構造方法
得到某個類所有的構造方法
Constructor[] constructors = Class.forName("java.lang.String").getConstructors();
得到某一個構造方法
Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);
constructor.newInstance();
Field類
對象.getclass.getField("變量名"),
只代表成員變量 要用 get()取值
字節碼用等號比
Method類
代表某個類的成員方法
對象.getclass.getMethod("方法",具體哪個)
invoke
專家模式:誰有數據,誰就是幹這個的專家
數組的反射
hashcode的作用
內省 javaBean-->特殊的java類,方法的名稱符合某種規則
註解
@suppressWarnings
@override
@Deprecated
@interfaceA
{
}
@Retention()註解存在的時間
是個枚舉類型
source class RunTime
@Target()註解存在的地方
default 缺省默認值
value
泛型
類加載器
加載類的工具
把類的字節碼加載到內存中
BootStrap ExtClassLoader AppClassLoader
java類 BootStrap不是java類 可以加載類加載器和其他類
類加載器的委託機制
當前線程的類加載器
如果類A引用了類B,用加載A的加載B
ClassLoader.LoaderClass()
編寫自己的類加載器
繼承ClassLoader
保留loadClass流程
覆蓋findClass
通過defineClass將類轉換成字節碼
動態代理
利用工廠模式和配置文件的方式進行管理
面向方面的變成
三個步驟
1、獲得代理  Class 類  Proxy.
2、獲得代理的構造方法
3、加載構造方法

1、
Class clazz = Proxy.getProxyClass(Collection.class.getClassLoader(),Collection.class);
Constructor constructor = clazz.getConstuctor(InvocationHandler.class);
Collection collection = (Collection)constructor.newInstance(new MyInvacationHandler());
2、
Collection collection = (Collection) Proxy.newProxyInstance(Collection.class.getClassLoader,new Class[]{Collection.class},new InvacationHandler()
{
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章