對象的建立和拷貝java
對象的初始化編程
多態的實現segmentfault
內部類、匿名類、靜態類閉包
對象內存模型jvm
上面內容均請參考如下文章:代理
談談Java的面向對象code
聊聊Java的註解及實現blog
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 } } }
Unsafe
JNI
Java本身實現內存池