import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface MyLoveForYou { String love(); }
public class Love { @MyLoveForYou(love="吾爱亦吾心") private String love; public String getLove() { return love; } public void setLove(String love) { this.love = love; } //重写 toString() 方法。 @Override public String toString() { return "Love [love=" + love + "]"; } }
import java.lang.reflect.Field; public class ProcessAnnotation { private static Love love; //创建 love 实例 public static Love getLove(){ Class<?> clazz = Love.class; try { Field field = clazz.getDeclaredField("love"); field.setAccessible(true); MyLoveForYou myLoveForYou = field.getAnnotation(MyLoveForYou.class); String fieldLove = myLoveForYou.love(); try { love = (Love)clazz.newInstance(); } catch (InstantiationException | IllegalAccessException e) { e.printStackTrace(); } love.setLove(fieldLove); } catch (NoSuchFieldException | SecurityException e) { e.printStackTrace(); } return love; } }
import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class Test { public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { //异常有点多,但是不用担心,其实只有三行代码。 Love love = ProcessAnnotation.getLove(); System.out.println(love.getLove()); System.out.println(love.toString()); } }
##簡單說明以下
這裡就使用了一個非常簡單的註解類,使用了兩個最基礎的元註解(元註解的意思就是: 修飾的是類的屬性 保留到運行期
)。
然後就可以使用註解了,簡單的使用其實很簡單,就像下面這樣就像了。 @MyLoveForYou(love="吾愛亦吾心")#這裡強調以下,單純的使用註解是沒有任何用的,註解需要藉助專門的工具處理,這裡定義一個簡單的處理註解的類別(
這個類別可能需要一點反射的知識,但是也不要緊,如果你只想知道註解的作用,也可以不用管它,記住用法就行了
以上是Java註解入門案例程式碼分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!