在ClassReader中有两个重要的属性,如下定义:
/** A hashtable containing the encountered top-level and member classes,
* indexed by flat names. The table does not contain local classes.
*/
private Map<Name,ClassSymbol> classes;
/** A hashtable containing the encountered packages.
*/
private Map<Name, PackageSymbol> packages;
初始化时是使用SymbolTable中的两个类似的变量定义:
/** A hashtable containing the encountered top-level and member classes,
* indexed by flat names. The table does not contain local classes.
* It should be updated from the outside to reflect classes defined
* by compiled source files.
*/
public final Map<Name, ClassSymbol> classes = new HashMap<Name, ClassSymbol>();
/** A hashtable containing the encountered packages.
* the table should be updated from outside to reflect packages defined
* by compiled source files.
*/
public final Map<Name, PackageSymbol> packages = new HashMap<Name, PackageSymbol>();