sample34_10.java

来自「Java SE 6.0前32-34章示的示例代码,简单易学」· Java 代码 · 共 50 行

JAVA
50
字号
package wyf.jc;
import java.lang.annotation.*;
import java.lang.reflect.*;
//声明使用目标为TYPE的注解
@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.TYPE)
@interface MyAnnotationForClass {
    java.lang.String msg() ;  
}
//声明使用目标为METHOD的注解
@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.METHOD)
@interface MyAnnotationForMethod {
    java.lang.String msgPart1() ;  
    java.lang.String msgPart2() ;  
}
//声明使用注解的类
@MyAnnotationForClass(msg="这是对类的注解")
class MyClass
{
	@MyAnnotationForMethod(msgPart1="方法的第一部分注解"
	,msgPart2="方法的第二部分注解")
	public void sayHello()
	{
		System.out.println("恭喜您成功地调用了sayHello方法!!!");
	}
}
//主类
public class Sample34_10
{
     public static void main(String[] args) throws NoSuchMethodException
     {
          //获取使用了注解的类MyClass对应的Class对象
          Class ac=MyClass.class;
          //获取MyClass类的注解
          MyAnnotationForClass mafc=
              (MyAnnotationForClass)ac.getAnnotation(MyAnnotationForClass.class);
          //打印类的注解信息
          System.out.println("MyClass类的注解信息为:“"+mafc.msg()+"”。");
          //获取指定方法对应的Method对象
          Method method=ac.getMethod("sayHello",new Class[0]);
          //获取方法对应的注解
          MyAnnotationForMethod mafm=
            (MyAnnotationForMethod)method.getAnnotation(MyAnnotationForMethod.class);
          //打印方法对应的注解信息
          System.out.println("sayHello方法的第一部分注解信息为:“"+mafm.msgPart1()+"”。");
          System.out.println("sayHello方法的第二部分注解信息为:“"+mafm.msgPart2()+"”。");
     }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?