对象的建立和拷贝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本身实现内存池