关于package-info.java

以前不知道有package-info.java这个类,读javac源码在”输出符号表“的处理中碰到了它,于是简单研究一下

1.package-info.java用于描述当前包的信息

2.创建它的办法
在Eclipse中创建这个类名是不被允许的,会报"Type name is notvalid"错误(java类名是不允许有中划线"-"的),可以先在Eclipse之外创建package-info.java然后拖入Eclipse中

3.package-info.java不能声明package-info类的实现(因为package-info.java被编译后其实是一个interface)
找到package-info.class文件,命令行输入 javap -v package-info,如下图:

[img]http://dl.iteye.com/upload/attachment/0069/5628/1bd5032e-f988-345a-9084-a58d5c398f26.gif[/img]


[b]package-info.java有以下作用:
1.声明友好类和包内访问常量
2.为在包上标注注解提供便利
3.提供包的整体注释说明[/b]

编写测试类:
[img]http://dl.iteye.com/upload/attachment/0069/5646/9ac9d100-c10e-3b52-bbf7-a4a878bf96e7.gif[/img]


package com.enter.test;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* Package declaration
*/
@Target(ElementType.PACKAGE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyPackageAnnoation {

}


@MyPackageAnnoation // 包上注解
package com.enter.test;

/**
* 包内方法
*/
class MyPackageMethod {
public void myPackageMethod() {
System.out.println("MyPackageMethod...");
}
}

/**
* 包内常量
*/
class MyPackageConst {
static final java.lang.String PACKAGE_STRING = "myPackageConst";
}



package com.enter.test;

import java.lang.annotation.Annotation;

public class PkgInfoTest {

public static void main(String[] args) {
// ===========================友好类和包内访问常量==============
new MyPackageMethod().myPackageMethod();
System.out.println(MyPackageConst.PACKAGE_STRING);

// ===========================包上注解=========================
Package pkg = Package.getPackage("com.enter.test");
for (Annotation annotation : pkg.getAnnotations())
System.out.println(annotation.annotationType().getName());
}
}

输出:
MyPackageMethod...
myPackageConst
com.enter.test.MyPackageAnnoation


提供包的整体注释说明请参照[url=http://strong-life-126-com.iteye.com/blog/806246]这里[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值