Java Annotation ½éÉÜ£¨×ª£©
×÷Õß:cleverpig(×÷ÕßµÄBlog:http://blog.matrix.org.cn/page/cleverpig)
ÔÎÄ:http://www.matrix.org.cn/resource/article/44/44055_Java+Annotation+Reflect.html
¹Ø¼ü×Ö:java,annotation,reflect
ǰÑÔ£º
ÔÚÉÏÆªÎÄÕ¡¶Java AnnotationÈëÃÅ¡·ÖиÅÒªÐԵĽéÉÜÁËAnnotationµÄ¶¨Ò塢ʹÓ㬷¶Î§º¸Ç½Ï¹ã£¬µ«ÊÇÉî¶È²»¹»¡£ËùÒÔ×÷ÕßÔÚ¡¶Java AnnotationÈëÃÅ¡·ºó£¬¼ÌÐøÕûÀíÁËAnnotationµÄ¸ÅÄîºÍ֪ʶµã£¬Óëϲ»¶researchµÄÅóÓÑÃǹ²Ïí¡£
ÔĶÁÌáʾ£ºÎÄÖÐÌáµ½µÄ³ÌÐò³ÉÔ±»òÕß³ÌÐòÔªËØÊÇÒ»¸ö¸ÅÄָ×é³É³ÌÐò´úÂëµÄµ¥Ôª£ºÈçÀà¡¢·½·¨¡¢³ÉÔ±±äÁ¿¡£
Ò»¡¢Annotation¾¿¾¹ÊÇʲô£¿
Annotation ÌṩÁËÒ»ÌõÓë³ÌÐòÔªËØ¹ØÁªÈκÎÐÅÏ¢»òÕßÈκÎÔªÊý¾Ý£¨metadata£©µÄ;¾¶¡£´ÓijЩ·½Ãæ¿´£¬annotation¾ÍÏñÐÞÊηûÒ»Ñù±»Ê¹Ó㬲¢Ó¦ÓÃÓÚ°ü¡¢ÀàÐÍ¡¢¹¹Ôì·½·¨¡¢·½·¨¡¢³ÉÔ±±äÁ¿¡¢²ÎÊý¡¢±¾µØ±äÁ¿µÄÉùÃ÷ÖС£ÕâЩÐÅÏ¢±»´æ´¢ÔÚannotationµÄ“name=value”½á¹¹¶ÔÖС£ annotationÀàÐÍÊÇÒ»ÖÖ½Ó¿Ú£¬Äܹ»Í¨¹ýjava·´ÉäAPIµÄ·½Ê½Ìṩ¶ÔÆäÐÅÏ¢µÄ·ÃÎÊ¡£
annotationÄܱ»ÓÃÀ´ÎªÄ³¸ö³ÌÐòÔªËØ£¨Àà¡¢·½·¨¡¢³ÉÔ±±äÁ¿µÈ£©¹ØÁªÈκεÄÐÅÏ¢¡£ÐèҪעÒâµÄÊÇ£¬ÕâÀï´æÔÚ×ÅÒ»¸ö»ù±¾µÄDZ¹æÔò£ºannotaion²»ÄÜÓ°Ïì³ÌÐò´úÂëµÄÖ´ÐУ¬ÎÞÂÛÔö¼Ó¡¢É¾³ý annotation£¬´úÂ붼ʼÖÕÈçÒ»µÄÖ´ÐС£ÁíÍ⣬¾¡¹ÜһЩannotationͨ¹ýjavaµÄ·´Éäapi·½·¨ÔÚÔËÐÐʱ±»·ÃÎÊ£¬¶øjavaÓïÑÔ½âÊÍÆ÷ÔÚ¹¤×÷ʱºöÂÔÁËÕâЩannotation¡£ÕýÊÇÓÉÓÚjavaÐéÄâ»úºöÂÔÁËannotation£¬µ¼ÖÂÁËannotationÀàÐÍÔÚ´úÂëÖÐÊÇ“²»Æð×÷ÓԵģ»Ö»ÓÐͨ¹ýijÖÖÅäÌ׵Ť¾ß²Å»á¶ÔannotationÀàÐÍÖеÄÐÅÏ¢½øÐзÃÎʺʹ¦Àí¡£±¾ÎÄÖн«º¸Ç±ê×¼µÄannotationºÍmeta- annotationÀàÐÍ£¬Åã°éÕâЩannotationÀàÐ͵Ť¾ßÊÇjava±àÒëÆ÷£¨µ±È»ÒªÒÔijÖÖÌØÊâµÄ·½Ê½´¦ÀíËüÃÇ£©¡£
ÓÉÓÚÉÏÊöÔÒò£¬annotationÔÚʹÓÃʱʮ·Ö¼ò±ã¡£Ò»¸ö±¾µØ±äÁ¿¿ÉÒÔ±»Ò»¸öÒÔNonNullÃüÃûµÄannotationÀàÐÍËù±ê×¢£¬À´×÷Ϊ¶ÔÕâ¸ö±¾µØ±äÁ¿²»Äܱ»¸³ÓènullÖµµÄ¶ÏÑÔ¡£¶øÎÒÃÇ¿ÉÒÔ±àдÓëÖ®ÅäÌ×µÄÒ»¸öannotation´úÂë·ÖÎö¹¤¾ß£¬Ê¹ÓÃËüÀ´¶Ô¾ßÓÐÇ°Ãæ±äÁ¿µÄ´úÂë½øÐнâÎö£¬²¢ÇÒ³¢ÊÔÑéÖ¤Õâ¸ö¶ÏÑÔ¡£µ±È»ÕâЩ´úÂë²¢²»±Ø×Ô¼º±àд¡£ÔÚJDK°²×°ºó£¬ÔÚJDK/binĿ¼ÖпÉÒÔÕÒµ½ÃûΪ“apt”µÄ¹¤¾ß£¬ËüÌṩÁË´¦ÀíannotationµÄ¿ò¼Ü£ºËüÆô¶¯ºóɨÃèÔ´´úÂëÖеÄannotation£¬²¢µ÷ÓÃÎÒÃǶ¨ÒåºÃµÄannotation´¦ÀíÆ÷Íê³ÉÎÒÃÇËùÒªÍê³ÉµÄ¹¤×÷£¨±ÈÈçÑéÖ¤Ç°ÃæÀý×ÓÖеĶÏÑÔ£©¡£Ëµµ½ÕâÀ annotationµÄÇ¿´ó¹¦ÄÜËÆºõ¿ÉÒÔÌæ´úXDocletÕâÀàµÄ¹
Ïà¹ØÎĵµ£º
Ê×ÏÈÀ´¸ö¼òµ¥ÄǵÄʵÀý:
package cn.vicky;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer {
private int i = 1;
private void change(long time){
System.out.println("one : " + i);
final Timer timer = new Timer();
timer.schedule(new TimerTask(){
@Overrid ......
package com.zwc.www.test;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class OperateEnum {
//first emun
enum PeopleTypeOne{RED,YELLOW,BLACK};
//second emun
public enum PeopleTypeTwo{
RED("a","#111111"),
......
µÚÒ»Õ ¸ÅÊö
°æÈ¨ÉùÃ÷
´ËÎĵµÓɱ¾È˸ºÔðÕûÀí×ܽᣬ²¢¶Ô¸ÃÎĵµ±£ÓÐÓÐÏÞÔðÈÎȨÀû£¬´ËÎĵµÖ»ÄÜÓÃÓÚѧϰÒÔ¼°½Ìѧ£¬ÇëÎðÓÃ×÷ÉÌÒµÓÃ;£¬Òò´Ë¶ø
²úÉúµÄ·¨ÂÉÎÊÌ⣬±¾ÈËÒ»¸Å²»¸ºÔð¡£ ±¾ÈËÉùÃ÷£¬´ËÎĵµ×ÊÁÏΪ±¾È˽Ìѧ¾ÑéºÍÍøÂç×ÊÁÏÊÕ¼¯ºÏ²¢Ö®³É¹û ......
¶¯Ì¬´úÀíÊÇÖ¸¿Í»§Í¨¹ý´úÀíÀàÀ´µ÷ÓÃÆäËü¶ÔÏóµÄ·½·¨
¶¯Ì¬´úÀíʹÓó¡ºÏ:
•Ô¶³Ì·½·¨µ÷ÓÃ(RMI)
•
1.´´½¨Ò»¸öʵÏÖ½Ó¿ÚInvocationHandlerµÄÀ࣬Ëü±ØÐëʵÏÖinvoke·½·¨
2.´´½¨±»´úÀíµÄÀàÒÔ¼°½Ó¿Ú
3.ͨ¹ýProxyµÄ¾²Ì¬·½·¨
newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler ......
//ʹÓÃabstractÄ¿µÄÊÇΪÁËÈÃʹÓÃÕßÖ»Äܵ÷ÓÃgetInstance»ñȡʵÀý
public abstract class RegexUtil {
public static void main(String[] args) {
RegexUtil ru = RegexUtil.getInstance();
String regexp = "(\\d+.\\d+.\\d+.\\d+):(\\d+)";
String data = "ldap://192.168.16.152:389/";
......