梦幻之旅

DEBUG - 天道酬勤

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  671 随笔 :: 6 文章 :: 256 评论 :: 0 Trackbacks
本练习有三个目标:
1.如何定义注释类型
2.如何使用注释类型
3.如何让注释影响程序运行

一.如何定义注释类型
package org.test.spring.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * <p>
 * 定义一个Person类专用的注释
 * </p>
 * 元注释Retention用于指定此注释类型的注释要保留多久, 元注释Target用于指定此注释类型的注释适用的程序元素的种类,
 * 
 * 
@author Huy Vanpon
 
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Annot4Person
{
    String name() 
default "惠万鹏";
    
    
int age() default 25;
    
    String gender() 
default "";
}


二.2.如何使用注释类型
package org.test.spring.annotation;

/**
 * <p>
 * 本类用于定义人类,包含一个自我介绍的方法
 * </p>
 * 
 * 
@author Huy Vanpon
 
*/
public class Person
{
    @Annot4Person(name 
= "何洁", gender = "", age = 16)
    
public void introductionMyself(String name, String gender, int age)
    {
        StringBuffer sb 
= new StringBuffer();
        sb.append(
"嗨,大家好,我叫");
        sb.append(name);
        sb.append(
",今年");
        sb.append(age);
        sb.append(
"岁,是一个充满阳光的");
        sb.append(gender);
        sb.append(
"孩.");
        System.out.println(sb.toString());
    }
}


三.如何让注释影响程序运行
package org.test.spring.annotation;

import java.lang.reflect.Method;

/**
 * <p>
 * 本用利JAVA的反射机制,让注释影响程序的运行
 * </p>
 * 
 * 
@author Huy Vanpon
 
*/
public class AnnotDisturber
{
    
public void testAnnot4Person()
    {
        Class
<Person> clazz = Person.class;
        
try
        {
            
//通过方法名和入参确定方法
            Method method = clazz.getDeclaredMethod("introductionMyself",
                    String.
class, String.classint.class);
            
if (method == null)
            {
                
return;
            }
            
//从方法取得注释
            Annot4Person annotation = method.getAnnotation(Annot4Person.class);
            
if (annotation == null)
            {
                
return;
            }
            
//调用这个方法
            method.invoke(new Person(), annotation.name(), annotation.gender(),
                    annotation.age());
        }
        
catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    
    
public static void main(String[] args)
    {
        AnnotDisturber tt 
= new AnnotDisturber();
        tt.testAnnot4Person();
    }
}


posted on 2008-07-25 11:48 HUIKK 阅读(1113) 评论(0)  编辑  收藏 所属分类: Spring

只有注册用户登录后才能发表评论。


网站导航: