Javac中对import关键字进行的处理

 

参考文章:

(1)关于类的符号输入过程第二篇

 

 

 

 

ImportScope中存储的为ImportEntry,继承了Scope.Entry类并且多定义了个origin属性,也就是符号的最终来源。除此之外还对getOrigin()方法进行了覆写,返回origin属性,这是由于静态导入的原因,举例如下:

package com.test19;

public class TestStaticParent {
	public static class AAA{
		int a  =2;
	}
}

然后在同一个包下编写子类,如下:

package com.test19;

public class TestStaticSub extends TestStaticParent{
	public static class BBB{
		int a;
	}
}

在另外不同的包中通过静态导入两个public静态内部类AAA与BBB,然后就可以使用这两个静态内部类了,如下:

package com.test20;

import static com.test19.TestStaticSub.*;
public class Test04 {
	public void m(){
		Object o1  = new AAA();
		Object o2 = new BBB();
	}
}

这样Entry类中的scope的owner为ClassSymbol(TestStaticSub),而origin的owner为ClassSymbol(TestStaticParent)

后续需要研究的问题:

(1)如何用origin属性的?

 

  

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/extjs4/p/9789488.html