java annotation list_java-注解annotation
package cd.itcast.day2;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* 注解
*
* 注解的使用構(gòu)成: 1,注解的申明 2,在類型(代碼)上面打上注解 3,第三方的程序在使用打了注解的類型
*
* 作業(yè):自己設(shè)計一套文檔標(biāo)簽,如果我在一個類上面加了這些標(biāo)簽,我把這個類作為參數(shù)傳給一個方法,就能為這個類的注釋生成一個API文檔文件
*
* @author Administrator
*
*/
public class AnnotationDemo {
/**
* 使用Annotation(使用反射來得到標(biāo)簽實例) A getAnnotation(Class
* annotationClass):得到指定類型的注解實例 Annotation[] getAnnotations():得到該類型上面的所有注釋實例
* Annotation[] getDeclaredAnnotations() :返回直接存在于此元素上的所有注釋。 boolean
* isAnnotation() : 該類型是否是一個標(biāo)簽類型(Class) boolean isAnnotationPresent(Class
* extends Annotation> annotationClass) :判斷該類型上面是否有指定的標(biāo)簽類型
*
* @param args
*/
public static void main(String[] args) throws Exception {
Class c = User.class;
// 說明:annotation也是一種類型
// Class a=MyAnn.class;
if (c.isAnnotationPresent(MyAnn.class)) {
System.out.println("hello");
MyAnn ann = c.getAnnotation(MyAnn.class);
System.out.println(ann.name());
System.out.println(Arrays.toString(ann.names()));
System.out.println(ann.resetDay());
OtherAnn other = ann.other();
System.out.println("other " + other.value());
} else {
System.out.println("fck");
}
Method m = c.getDeclaredMethod("getName");
if (m.isAnnotationPresent(MyAnn.class)) {
System.out.println("方法上面有標(biāo)簽");
}
}
/**
* @SuppressWanings:去掉警告,(去掉警告的類型寫在后面括號里面) 標(biāo)簽有自己定義的能放置的位置
*/
@SuppressWarnings(value = "deprecation")
public void dateTest() {
Date d = new Date();
System.out.println(d.toLocaleString());
AnnotationDemo dd = new AnnotationDemo();
dd.someThing();
}
/**
* 標(biāo)簽里面可以有值, 1,一個常量值 2,一個數(shù)組
*
* @Deprecated:方法過時
*/
@SuppressWarnings({ "rawtypes", "unused" })
@Deprecated
public void someThing() {
List a = new ArrayList();
}
/**
* 注釋一個標(biāo)簽。這個標(biāo)簽沒有參數(shù)值
*
* @Override:代表當(dāng)前方法是覆蓋一個父類的方法
*/
@Override()
public String toString() {
return super.toString();
}
}
package cd.itcast.day2;
import java.lang.annotation.ElementType;
/**
* 自定義一個注釋
* @author Administrator
*
* @Retention:規(guī)定定義的這個標(biāo)簽保留到什么時候
* @Target:規(guī)定定義的這個標(biāo)簽?zāi)芗虞d哪些位置
* ANNOTATION_TYPE:標(biāo)簽上面
* Constructor:構(gòu)造器上面
* Field:字段
* Local variable:局部變量
* METHOD:方法/方法的返回類型
* PACKAGE:包
* Parmater:方法參數(shù)
* TYPE:類/接口/枚舉
*/
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnn {
/**
* 在標(biāo)簽里面加參數(shù) 類型 屬性名稱() [default 類型的值]
* 注意:如果在標(biāo)簽里面僅有value這個屬性要填,在使用的時候就可以忽略不寫
*/
String name() default "itcast";
String[] names() default {};
String value();
WeekDays resetDay();
OtherAnn other();
}
package cd.itcast.day2;
public @interface OtherAnn {
String value();
}
總結(jié)
以上是生活随笔為你收集整理的java annotation list_java-注解annotation的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 常用模块函数_python
- 下一篇: 初学JAVA,javaoo小结