|
|
§A¥i¥H¦ÛqAnnotation«¬§O¡A¨Ã¨Ï¥Î³o¨Ç¦ÛqªºAnnotation«¬§O¦bµ{¦¡½X¤¤¨Ï¥Î Annotation¡A³o¨ÇAnnotation±N´£¨Ñ¸ê°Tµ¹§Aªºµ{¦¡½X¤ÀªR¤u¨ã¡C º¥ý¨Ó¬Ý¬Ý¦p¦ó©w¸qMarker Annotation¡A¤]´N¬OAnnotation¦WºÙ¥»¨§Y´£¨Ñ¸ê°T¡A¹ï©óµ{¦¡¤ÀªR¤u¨ã¨Ó»¡¡A¥Dn¬OÀˬd¬O§_¦³Marker Annotationªº¥X²{¡A¨Ã§@¥X¹ïÀ³ªº°Ê§@¡C n©w¸q¤@ÓAnnotation©Ò»Ýªº°Ê§@¡A´NÃþ¦ü©ó©w¸q¤@Ó¤¶±¡]interface¡^¡A¥u¤£¹L§A¨Ï¥Îªº¬O@interface¡A¨Ò¦p©w¸q¤@Ó Debug Annotation«¬ºA¡G package cc.openhome;
public @interface Debug {} ¥Ñ©ó¬OÓMarker Annotation¡A©Ò¥H¨S¦³¥ô¦óªº¦¨û¦bùØÀY¡A½sͧ¹¦¨«á¡A§A´N¥i¥H¦bµ{¦¡½X¤¤¨Ï¥Î³oÓAnnotation¤F¡A¨Ò¦p¡G package cc.openhome;
import java.util.*; public class SomeObject { @Debug public void doSomething() { // .... } } ±µµÛ¨Ó¬Ý¬Ý¦p¦ó©w¸q¤@ÓSingle-value Annotation¡A¥¦¥u¦³¤@Ó¦¨û¡A¦WºÙ¬°value¡A¨Ò¦p§A¥i¥H´£¨ÑDebug Annotation§ó¦h¸ê°T¡G package cc.openhome;
public @interface Debug { String value(); } ¹ê»Ú¤W§A©w¸q¤Fvalue()¤èªk¡A½s;¹¦b½sͮɷ|¦Û°ÊÀ°§A²£¥Í¤@ÓvalueªºÅܼƦ¨û¡A±µµÛ¦b¨Ï¥ÎDebug Annotation®Én«ü©wÈ¡A¨Ò¦p¡G package cc.openhome;
import java.util.*; public class SomeObject { @Debug("unit test") public void doSomething() { // .... } } @Debug("unit test")¹ê»Ú¤W¬O@Debug(value="unit test")ªºÂ²«K¼gªk¡A¦pªG¬O°}¦CÈ¡A¨Ò¦p¡G package cc.openhome;
public @interface Debug { String[] value(); } «h¨Ï¥ÎAnnotation®É¡A¥i¥H¼g¦¨@Debug({"value1", "value2"})¡A©Î¬O@Debug(value={"value1", "value2"})¡C §A¤]¥i¥H¹ï¦¨û³]©w¹w³]È¡A¨Ï¥ÎdefaultÃöÁä¦r§Y¥i¡A¨Ò¦p¡G package cc.openhome;
public @interface Debug { String value() default "none"; } ³o»ò¤@¨Ó¦pªG§A¨Ï¥Î@Debug®É¨S¦³«ü©wÈ¡A«h¹w³]´N¬O"none"¡C §A¤]¥i¥H¬°Annotation©w¸qÃB¥~ªº¦¨û¡A¥H´£¨ÑÃB¥~ªº¸ê°Tµ¹¤ÀªR¤u¨ã¡A¨Ò¦p¡G package cc.openhome;
public @interface Debug { public enum Level {NONE, UNIT, INTEGRATION, FUNCTION}; Level level() default Level.NONE; String name(); String tester(); } «h§A¥i¥H¦p¤U¨Ï¥Î³oÓAnnotation¡G package cc.openhome;
import java.util.*; public class SomeObject { @Debug( level = Debug.Level.UNIT, name = "some test", tester = "justin" ) public void doSomething() { // .... } } @interface¹ê»Ú¤W¬O¦Û°ÊÄ~©Ó¦Ûjava.lang.annotation.Annotation¡A©Ò¥H©w¸qAnnotation®É¤£¯àÄ~©Ó¨ä¥¦ Annotation©Î¬Ointerface¡C ©w¸q§ÎºA¥u¬O¶}©l¡AAnnotationªº¥Øªº¦b©ó´£¨Ñ¸ê°T¡AÃö©ó´£¨Ñ¸ê°T¡AÁÙ¦³³\¦hn¤F¸Ñªº¡A½ÐÄ~Äò©¹¤U¤@½g¶i¦æ¡C |