packinfo-java的作用

package-info.java 包的作用

1. 为标注在包上的Annotation提供便利

2. 声明包的私有类和常量

3. 提供包的整体注释说明

代码说明:

package-info.java文件
 @PackageAnotation(version="1.0")
package com.ltao.package.test

class PackageInfo {
    public void common() {
        System.out.println("sa");
    }
}

class PackageInfoGeneric<T extends Throwable> {
    private T obj;

    public void set(T obj) {
        this.obj = obj;
    }

    public void common() {
        System.out.println(obj + "sa");
    }
}

interface packageInfoInteger {
    public void test();
}

class PackageConstants {
    public static final String ERROE_CODE = "100001";
}

上面的package-info文件定义了类,泛型,接口,常量 。这些都是包范围可见的,这种方式可以实现了对包可访问范围类的统一整理


PackageAnotation.java 定义修饰包的注解
@Target(ElementType.PACKAGE)
@Retention(RetentionPolicy.RUNTIME)
@interface PackageAnotation{    public String version() default "";}
package com.lt.package.test;  

import java.io.IOException;  

/**
 * 测试package-info.java文件的作用
 * 1、为标注在包上Annotation提供便利;<br>
 * 2、声明包的私有类和常量;<br>
 * @author [email protected]
 *
 */
public class TestPackageInfo {  

    public static void main(String[] args) {
        //1
        Package p = Package.getPackage("com.lt.package.test");
        if(p != null && p.isAnnotationPresent(PackageAnotation.class)){
            PackageAnotation nav = p.getAnnotation(PackageAnotation.class);
            if(nav != null){
                System.out.println("package version:" + nav.version());
            }
        }
    }
}

输出结果: package version :1.0 (获取到注解中的version信息)

使用javadoc 生成doc文档时,package-info.java也会生成相应的文档说明,可以在这里面对类的信息进行描述。

时间: 2024-04-11 17:01:54

packinfo-java的作用的相关文章

JAVA static 作用

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享.只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们.因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象. 用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的

关于java的作用

关于java的作用,主要就是编程(这个是老师要求的,随便应付一下的)

java设计模式之适配器模式以及在java中作用

适配器作用就是讲一个接口适配到另一个接口,在Java 的I/O类库中有很多这样的需求,如将字符串数据转变成字节数据保存到文件中,将字节数据转变成流数据等. 以InputStreamReader和OutputStreamWriter类为例. InputStreamReader和OutputStreamWriter类分别继承了Reader和writer接口,但是要创建他们的对象必须在构造函数中传入一个InputStream和OutputStream 的实例,InputStreamReader和Out

java内部类作用

推荐一. 定义 放在一个类的内部的类我们就叫内部类. 二. 作用 1.内部类可以很好的实现隐藏 一般的非内部类,是不允许有 private 与protected权限的,但内部类可以 2.内部类拥有外围类的所有元素的访问权限 3.可是实现多重继承 4.可以避免修改接口而实现同一个类中两种同名方法的调用. 三.   例子 1.实现隐藏 平时我们对类的访问权限,都是通过类前面的访问修饰符来限制的,一般的非内部类,是不允许有 private 与protected权限的,但内部类可以,所以我们能通过内部类

Java &amp; hashCode作用

首先,想要明白hashCode的作用,你必须要先知道Java中的集合. 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set.你知道它们的区别吗?前者集合内的元素是有序的,元素可以重复:后者元素无序,但元素不可重复.那么这里就有一个比较严重的问题了:要想保证元素不重复,可两个元素是否重复应该依据什么来判断呢?这就是Object.equals方法了.但是,如果每增加一个元素就检查一次,那么当元素很多时,后添加到集合中的元素比较的次数就非常多了.也就是说,如果集

Java serialVersionUID作用

今天在学习Java的文件输入输出时,学习了高级流ObjectInputStream,它使用了是序列化的写入和写出,在写出的时候遇到了一个错误:java.io.InvalidClassException:local class incompatible: stream classdesc serialVersionUID = -, local class serialVersionUID = - 在网上找了一些solution,解决办法如下:在实现serializable接口的类中,定义一个ser

java ThreadGroup 作用 方法解析(转)

ThreadGroup线程组,java对这个类的描述呢就是“线程组表示一组线程.此外,线程组还可以包括其他线程组.线程组形成一个树,其中除了初始线程组之外的每个线程组都有一个父线程组.允许线程访问关于其线程组的信息,但不允许访问关于其线程组的父线程组或任何其他线程组的信息.” ThreadGroup并不是算是标注容器,因为,最后你会发现这个家伙是没有public的 add,remove方法的.那怎么把线程放到线程组里面呢?答案是 在new Thread(参数),将ThreadGroup当做参数传

java设计模式之观察者模式以及在java中作用

观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependents)模式. 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 推模型和拉模型 在观察者模式中,又分为推模型和拉模型两种方式. ● 推模型 主题对象向观察者推送主题的详细信息,不管观察者是否需

java设计模式之装饰器模式以及在java中作用

在JAVA I/O类库里有很多不同的功能组合情况,这些不同的功能组合都是使用装饰器模式实现的,下面以FilterInputStream为例介绍装饰器模式的使用  FilterInputStream和FilterOutputStream 首先,这两个都分别是InputStream和OutputStream的子类.而且,FilterInputStream和FilterOutputStream是具体的子类,实现了InputStream和OutputStream这两个抽象类中为给出实现的方法. 但是,F

java classpath作用

环境变量的配置: 1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk path=%JAVA_HOME%\bin 2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找. classpath的配置: 1):永久配置方式:classpath=.;c:\;e:\ 2):临时配置方式:set classpath=.;c:\;e:\ 注意:在定义c