源码-hadoop1.1.0-core-org.apache.hadoop.classification

时间:2021-05-11 13:13:59

  源码-hadoop1.1.0-core-org.apache.hadoop.classification

里面放着两个注解类:InterfaceAudience和InterfaceStability。

InterfaceAudience 类包含三个注解类型,用来被说明被他们注解的类型的潜在的使用范围(audience)。
         @InterfaceAudience.Public: 对所有工程和应用可用
         @InterfaceAudience.LimitedPrivate: 仅限于某些特定工程,如Comomn,HDFS等
         @InterfaceAudience.Private: 仅限于Hadoop

InterfaceStability 类包含三个注解,用于说明被他们注解的类型的稳定性。
         @InterfaceStability.Stable: 主版本是稳定的,不同主版本间可能不兼容
         @InterfaceStability.Evolving: 不断变化,不同次版本间可能不兼容
         @InterfaceStability.Unstable: 没有任何可靠性和健壮性保证


 /**
*注释省略...
**/
package org.apache.hadoop.classification; import java.lang.annotation.Documented;
//只引入了JDK的注释包中的Documented接口,即没有其他hadoop类级联
/**
* Annotation to inform users of a package, class or method's intended audience.
*/
//这里面也是注解类,用来向用户表明一个包、类或者方法的潜在的使用范围
@InterfaceAudience.Public
@InterfaceStability.Evolving
//自注解(自己起的名字)。第一个注解就用到了这个类中的第一个内部注解。第二个是同包下的第二个类(不解释)。
public class InterfaceAudience {
/**
* Intended for use by any project or application.
*/
@Documented public @interface Public {};
//@Doccumented 是元注解(就是注解注解的注解),作用是指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化。
//这个注解是标识适用任何工程或者应用
/**
* Intended only for the project(s) specified in the annotation.
* For example, "Common", "HDFS", "MapReduce", "ZooKeeper", "HBase".
*/
@Documented public @interface LimitedPrivate {
String[] value();
};
//标识适用于某些特殊的工程。比如HDFS、Mapreduce等
//它的值是个字符串数组,表示可以是多个工程 /**
* Intended for use only within Hadoop itself.
*/
@Documented public @interface Private {};
//只适用于hadoop自己
private InterfaceAudience() {} // Audience can't exist on its own
//构造方法,私有的。已有注释
}

关于元注解和自定义注解 http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html


 package org.apache.hadoop.classification;

 import java.lang.annotation.Documented;

 /**
* Annotation to inform users of how much to rely on a particular package,
* class or method not changing over time.
*/
//说明被他们注解的类型的稳定性
@InterfaceAudience.Public
@InterfaceStability.Evolving
public class InterfaceStability {
/**
* Can evolve while retaining compatibility for minor release boundaries.;
* can break compatibility only at major release (ie. at m.0).
*/
@Documented
public @interface Stable {};
//主版本是稳定的,不同主版本间可能不兼容
/**
* Evolving, but can break compatibility at minor release (i.e. m.x)
*/
@Documented
public @interface Evolving {};
//不断变化,不同次版本间可能不兼容
/**
* No guarantee is provided as to reliability or stability across any
* level of release granularity.
*/
@Documented
public @interface Unstable {};
//没有任何可靠性和健壮性保证
}