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

相关文章
相关标签/搜索