包级私有的类是不是一定可以被同一个包中的其他类访问呢?答案:不一定
		为什么会这样呢?原因与classloader有关。
		java规范规定:一个包级私有的类要想被同一包中其他的类访问,则这两个类必须是由同一个classloader加载的。
		classloader是分层次的从高到低如下图:
		
				
						
								| 
										  启动类classloader 
								 | 
						
						
								| 
										  extension classloader 
								 | 
						
						
								| 
										  application classloader 
								 | 
						
						
								| 
										  network classloader 
								 | 
						
				
		
java的类加载机制采用"委托给父类"的模式,就是说一个classloader要加载某个类,它首先让父类加载,如此递归。如果最后没有找到才由它自己加载。如果我们自己写一个类java.lang.Test类,去访问String(int offset, int length, char[] array)这个构造函数(该构造函数是包级私有的),java检查到这两个类不是由同一个classloader加载的所有访问时会报异常。
	
posted on 2006-12-22 09:06 
comchyi 阅读(151) 
评论(0)  编辑  收藏