Java知識點彙總

OOP

  • 對象的建立和拷貝java

  • 對象的初始化編程

  • 多態的實現segmentfault

  • 內部類、匿名類、靜態類閉包

  • 對象內存模型jvm

上面內容均請參考如下文章:代理

談談Java的面向對象code

運行時

異常

聊聊Java的異常機制及實現orm

泛型

聊聊Java的泛型及實現對象

註解

聊聊Java的註解及實現blog

反射

必讀文章:

Java反射的使用

Java反射在JVM的實現

擴展閱讀:

關於反射調用方法的一個log

補充

Java 5中引入了泛型的概念以後,Java反射API也作了相應的修改,以提供對泛型的支持。因爲類型擦除機制的存在,泛型類中的類型參數等信息,在運行時刻是不存在的。JVM看到的都是原始類型。對此,Java 5對Java類文件的格式作了修訂,添加了Signature屬性,用來包含不在JVM類型系統中的類型信息。好比以java.util.List接口爲例,在其類文件中的Signature屬性的聲明是<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>;; ,這就說明List接口有一個類型參數E。在運行時刻,JVM會讀取Signature屬性的內容並提供給反射API來使用。好比在代碼中聲明瞭一個域是List<String>類型的,雖然在運行時刻其類型會變成原始類型List,可是仍然能夠經過反射來獲取到所用的實際的類型參數。

Field field = Pair.class.getDeclaredField("myList");  //myList的類型是List 
Type type = field.getGenericType(); 
if (type instanceof ParameterizedType) {     
    ParameterizedType paramType = (ParameterizedType) type;     
    Type[] actualTypes = paramType.getActualTypeArguments();     
    for (Type aType : actualTypes) {         
        if (aType instanceof Class) {         
            Class clz = (Class) aType;             
            System.out.println(clz.getName());  //輸出java.lang.String         
        }     
    } 
}

動態代理

自動裝箱

Lambda表達式、Predicate、Consumer、閉包、變量捕獲

系統級

  • Unsafe

  • JNI

  • Java本身實現內存池

經常使用編程技法

IOC

AOP

相關文章
相關標籤/搜索