java獲取註解
『壹』 java反射機制 怎樣獲取到類上面的註解
//定義註解並指定java註解保留策略為運行時RUNTIME,運行時注入到JAVA位元組碼文件里
//這樣才可以在運行時反射並獲取它。
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@interfaceMyAnnotation{
Stringkey()default"";
intvalue()default0;
}
//使用註解
@MyAnnotation(key="key1",value=200)
classMyClass{}
//反射註解
publicstaticvoidmain(String[]args){
MyClassmyClass=newMyClass();
MyAnnotationannotation=myClass.getClass().getAnnotation(MyAnnotation.class);
System.out.println("key="+annotation.key()+" value="+annotation.value());
}
『貳』 java獲取當前類上的註解內容
@Retention(RetentionPolicy.RUNTIME) // 註解會在class位元組碼文件中存在,在運行時可以通過反射獲取到
@Target({ElementType.FIELD,ElementType.METHOD})//定義註解的作用目標**作用范圍欄位、枚舉的常量/方法
@Documented//說明該註解將被包含在javadoc中
public @interface FieldMeta {
/**
* 是否為序列號
* @return
*/
boolean id() default false;
/**
* 欄位名稱
* @return
*/
String name() default "";
/**
* 是否可編輯
* @return
*/
boolean editable() default true;
/**
『叄』 java 獲取所有帶註解的類
既然是基於spring,可以這樣:
ResourcePatternResolver rpr = new ();
Resource[] res = rpr.getResources("classpath*: **/*.class"); // classpath*:帶*號會找jar中的class
然後根據resource取clas路徑就行
String className = res[0].getURL().getPath();
className = className.split("(classes/)|(!/)")[1];
className = className.replace("/", ".").replace(".class", "");
Object obj = Class.forName(className);
話說我最近也在寫一個這樣的MVC。。要不咱兩合夥? 我寫的也是基於註解,不過要支持REST風格
『肆』 如何java中程序如何得到@Id這樣的注釋
java註解類public @Interface Id{}
import該類然後在方法,其他類,或者變數前就可以使用@Id註解了