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