以前不知道有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,如下图:
package-info.java有以下作用:
1.声明友好类和包内访问常量
2.为在包上标注注解提供便利
3.提供包的整体注释说明
编写测试类:
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
提供包的整体注释说明请参照
这里
- 大小: 5.4 KB
- 大小: 4.9 KB
分享到:
相关推荐
【package-info.java 文件的作用】 在Java编程中,`package-info.java`文件是一个特殊的源代码文件,它的主要功能是提供包级别的元数据,包括文档注释和包级别的变量。以下是其具体用途的详细解释: 1. **包级文档...
java-1.8.0-openjdk-devel-1.8.0.262.b10-1.el7.i686.rpm
安装包,亲测可用
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
赠送jar包:flink-streaming-java_2.12-1.14.3.jar; 赠送原API文档:flink-streaming-java_2.12-1.14.3-javadoc.jar; 赠送源代码:flink-streaming-java_2.12-1.14.3-sources.jar; 赠送Maven依赖信息文件:flink-...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
在Linux环境中,RPM(Red Hat Package Manager)是一种广泛使用的软件包管理器,用于安装、升级和管理软件。这个bin文件是一个可执行二进制文件,用户可以通过运行它来安装JDK。 描述中的"linux jdk 1.6 for X64...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
离线安装包,亲测可用
openjdk windows下安装 无需自己打包,下载后直接双击msi文件进行安装。
安装包,亲测可用
已经过mvn clean package -Dmaven.test.skip=true打包编译完成。 可以直接执行启动命令:java -jar rocketmq-console-ng-2.0.0.jar --server.port=9090 默认配置:server.port=8088、rocketmq.config.namesrvAddr=...
jdk-11.0.15.1(jdk-11.0.15.1_linux-x64_bin.rpm )适用于Linux x64 RPM Package系统:是一款Java 语言的软件开发工具包。JAVA JDK软件是整个Java的核心,不仅操作很简单,而且JAVA JDK有着实用、稳定、安全、高效...
"sublime-package-master.zip" 文件看起来是一个Sublime Text的汉化包,用于将Sublime Text的用户界面翻译成中文,方便中文用户使用。这个压缩包可能包含了各种汉化的资源文件,如语言文件、菜单、提示信息等。 在...
离线安装包,亲测可用
1. 首先就是从官网下载的Demo,里面只有C写的,让我一个java开发怎么看的懂,这个方面就比海康要差一点了; 2. 遇到问题,咨询他们的技术的时候,每次回复都是寥寥数字,还得让我猜半天,但最后问题好歹都解决了...
# 含有的 Java package(包): ``` cl.eye org.bytedeco.javacv ``` # 含有的 Java class(类)(此处仅列举3个): ``` cl.eye.CLCamera org.bytedeco.javacv.AndroidFrameConverter org.bytedeco.javacv....
新建一个servlet: FileUpload.java用于文件上传: package com.drp.util.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet....
稍微复杂一些的,-p可以指定生成的package,-o指定生成的路径,-ss生成服务端代码wsdl2java -uri ../wsdl/currencyConvert.wsdl -o ../gen_src -ss -sd -g -p foo.bat再复杂一些,-ns2p 将namespace进行替换,多个...