第
												
												
														五
												
												
														道虎纹:
												
												
														静态引入
												
												
														机制
												
										
								
								
										
										
										
								
						
				
		
		
				
						 
						
								
								
						
				
		
		
				
						
								管中窥虎
						
				
				
						
						
				
				
						
								
								
						
				
		
		
				在学习
				
				
				java 1.5
				
				
				的过程中,我使用了
				
				
				sun
				
				
				公布的
				
				
				tutorial
				
				
				,这份文档写的比较详尽易明,但是对于想快速了解
				
				
				tiger
				
				
				而且具有较好
				
				
				java
				
				
				基础的人来说,大篇幅的英文文档是比较耗时间和非必需的,所以我将会归纳这份文档的主要内容,在保证理解的底线上,尽力减少阅读者需要的时间。
				
				
				
						
						
				
		
		
				
						 
				
		
		
				在以下地址可以进入各新增语言特色介绍以及下载相关文档(若有)。
				
				
				
						
						
				
		
		
				
						
								http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html 
						
						
						
				
		
		
				
						
								 
						
				
		
		
				
				
						2006
						年
						8
						月
						17
						日
				
				星期四
		
		
				
						Static import
				
		
		
				
						 
				
		
		
				要使用一个类的静态成员,就要添加上类的名称,比如:
		
		
		
		
				
				
				
						
						
				
		
		
				
						 double
						 r 
						=
						 Math.cos(Math.PI 
						*
						 theta);
						double
						 r 
						=
						 Math.cos(Math.PI 
						*
						 theta);

 //
						theta是一个数值变量,不是外部static 成员,原文并未注明。
						//
						theta是一个数值变量,不是外部static 成员,原文并未注明。
 
				 
				为了摆脱这些类名,有些程序员会把静态成员放到一个接口里然后去实现这个接口,这个可不好。实际上,这样做已经糟糕到有幸成为了反模式:
		
		Constant Interface Antipattern
		。(参加
		Effective java Item 17
		)
		一个类用别的类的静态成员是实现的细节,而当这个类实现这样的接口时,这个接口就成为了这个类的接口的一部分,而实现细节是不应该漏入到
		public
		的接口中。
		
				而
				static import
				可以让一个类可以不需要指定类名地使用静态成员,而且不需继承额外的接口,它引入了这些成员,可以单独地或者全体引入:
		
		
		
		
				
						
						
				
		
		
				
						 import
						 
						static
						 java.lang.Math.PI;
						import
						 
						static
						 java.lang.Math.PI;

 import
						 
						static
						 java.lang.Math.
						*
						;
						import
						 
						static
						 java.lang.Math.
						*
						;
 
				 
				然后就可以简洁地使用它们:
		
		
				
						 
				
		
		
				 double
				 r 
				=
				 cos(PI 
				*
				 theta);
				double
				 r 
				=
				 cos(PI 
				*
				 theta);
		 
		 
		
				static import
				和以前的
				import
				类似,
				import
				从包里引入
				class, 
				而
				static import
				从类里引入成员。
		
		
				又到了经典一问:何时该用这个新特色?
		
		
				要很谨慎地使用!只有当你不用它就被迫要么声明外部
				static
				成员的本地副本要么就堕落到那个反模式中的时候,你才应该用它,换言之,当你需要频繁地使用某一两个类的静态成员时才应该使用
				static import
				。滥用的后果就是让你的代码可读性变差,命名空间被大量的引入的静态成员所污染。若干星期后,连你自己都读得不明不白。而且如果只是用得到其中的一两个成员,就不要用批量的引入了。
		
		
				
						 
				
		
	posted on 2006-08-17 18:10 
Ye Yiliang 阅读(1166) 
评论(4)  编辑  收藏  所属分类: 
Java