package 是java的关键字,是熟知的包概念,java封装了一个Package对象,用来专门处理包相关的问题
包的方法内容概要
1. 静态方法:获取所有的包对象和根据二进制名字查找包对象,其实现依赖ClassLoard对象
getPackage(String name);
getPackages();
2. 名字相关的一组方法: java 包有一套规范,参考规范即可
getName();
getImplementationTitle()
getImplementationVendor()
getImplementationVersion() getSpecificationTitle()
getSpecificationVendor() getSpecificationVersion()
3. 版本比较的方法:
isCompatibleWith(String version)
4. 是否封装密封的方法:
isSealed()
isSealed(URL url)
5. 和包上的注解相关的一组方法: 继承自 java.lang.reflect.AnnotatedElement接口
A getAnnotation(Class annotationClass)
Annotation[] getAnnotations()
Annotation[] getDeclaredAnnotations()
A getDeclaredAnnotation(Class annotationClass)
A[] getAnnotationsByType(Class annotationClass)
A[] getDeclaredAnnotationsByType(Class annotationClass)
isAnnotationPresent(Class extends Annotation> annotationClass)
packagechapter.lang;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;/*** 软件包对象包含有关Java包的实现和规范的版本信息。
* 该版本信息由加载该类的ClassLoader实例检索并提供。
* 通常,它存储在与类分发的清单中*/
public classPackageDemo {public static Logger logger = LoggerFactory.getLogger(PackageDemo.class);public static voidmain(String[] args) {try{//静态方法//classLoader 类的理解********************
Package[] packages =Package.getPackages();for(Package pk : packages){
logger.info("{} ",pk.getName());
}
logger.info("共计 {} 个包",packages.length);
Package findPackage= Package.getPackage("java.io");
logger.info("查找结果 {}",findPackage.getName());
Package pka= Class.forName("java.lang.Package").getPackage();
pka= Class.forName("org.slf4j.Logger").getPackage();
logger.info(">>>>>> {} ","和名字有关的方法");//返回此包的字符串表示形式。
logger.info(" toString ={}",pka.toString());//返回此包的名称。
logger.info(" 名字 name ={}",pka.getName());//返回此包的标题。
logger.info(" 标题 getImplementationTitle ={}",pka.getImplementationTitle());//返回此包的提供者
logger.info(" 提供者 getImplementationVendor ={}",pka.getImplementationVendor());//返回此包的提供者
logger.info(" 提供版本 getImplementationVersion ={}",pka.getImplementationVersion());//返回此程序包实现的规范的标题。
logger.info(" 规范标题 getSpecificationTitle = {}", pka.getSpecificationTitle());//规范的提供者
logger.info(" 规范提供者 getSpecificationVendor = {}", pka.getSpecificationVendor());//规范版本
logger.info(" 规范版本 getSpecificationVersion = {}", pka.getSpecificationVersion());//是否封装
logger.info("是否封装密封 isSealed(URL){}",pka.isSealed());//包的版本
logger.info("包版本比较 当前版本(isCompatibleWith) {} 是否大于参数{} 版本 = {}",
pka.getImplementationVersion(),"1.10",pka.isCompatibleWith("1.7.25"));//包上允许有注解,三组方法// A getAnnotation(Class annotationClass)//返回该元素的,如果这样的注释 ,否则返回null指定类型的注释//Annotation[] getAnnotations()//返回此元素上 存在的注释。
logger.info("第一组注解形式");//Annotation[] getDeclaredAnnotations()//返回 直接存在于此元素上的注释。//A getDeclaredAnnotation(Class annotationClass)//如果这样的注释 直接存在 ,则返回指定类型的元素注释,否则返回null
logger.info("第二组注解形式");//A[] getAnnotationsByType(Class annotationClass)//返回与此元素相关 联的注释 。// A[] getDeclaredAnnotationsByType(Class annotationClass)//如果此类注释 直接存在或 间接存在,则返回该元素的注释(指定类型)。
logger.info("第三组注解形式");//查找方法//boolean isAnnotationPresent(Class extends Annotation> annotationClass)//如果此元素上 存在指定类型的注释,则返回true,否则返回false。
logger.info("查找方法 isAnnotationPresent");
}catch(ClassNotFoundException e) {
e.printStackTrace();
}
}
}