1,Javac是什么:
Javac 是一种编译器:将 Java 源码编译成 Java 字节码(二进制码),即将 .java 文件转成 .class 文件。
检查语义:
- 变量的类型是否匹配。
- 变量在使用前是否已经初始化。
- 能够推导出泛型方法的参数类型。
- 字符串常量的合并。
数据流分析:
检查变量在使用前是否都已经被正确赋值。 除了 Java 的原始类型,如 int 、long、byte、double、char、float,都会有默认的初始化值。其他像 String 类型和对象的引用都必须在使用前先赋值。
保证 final 修饰的变量不会被重复赋值,经过 final 修饰的变量只能赋 一次值,重复赋值会在这一步编译时报错,如果这个变量是静态变量,则在定义时就必须对其赋值。
要确定方法的返回类型。检查这个方法返回值的引用类型是否匹配,若没有返回值,则不能有任何引用类型指向方法的这个返回值。
所有的Checked Exception 都要捕获或者向上抛出。
所有的语句都要被执行到,会检查是否有语句出现在一个return 方法的后面,因为在 return 语句后面的语句永远也不会被执行到。
变量的自动装箱、自动拆箱等。
4,设计模式之访问者模式
访问者模式:
- 抽象访问者 Visitor : 声明所有访问者需要的接口。
- 具体访问者 ConcreteVisitor:实现抽象访问者声明的接口。
- 抽象节点元素 Element:提供一个接口,能够接受访问者作为参数传递个节点元素。
- 具体节点元素 ConcreteElement:实现抽象节点元素声明的接口。
Enter作为一个访问者,实现抽象访问者 Visitor 中的所有接口,但是 Enter 这个访问者具体要实现什么功能由 Enter 自己定义。遍历这棵树使用统一接口 accept,每个节点元素都实现这个accept接口,但是不同节点元素的accept的实现是不同的,以区分不同的节点元素对应不同的功能。这就是访问者模式的思想。