⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reflectiontester.java

📁 Java5.0 Tiger 程序员高手秘笈一书的源代码
💻 JAVA
字号:
package com.oreilly.tiger.ch06;

import java.io.IOException;
import java.io.PrintStream;
import java.lang.reflect.AnnotatedElement;
import java.lang.annotation.Annotation;

public class ReflectionTester {

  public ReflectionTester() {
  }

  public void testAnnotationPresent(PrintStream out) throws IOException {
    Class c = Super.class;
    boolean inProgress = c.isAnnotationPresent(InProgress.class);
    if (inProgress) {
      out.println("Super is In Progress");
    } else {
      out.println("Super is not In Progress");
    }
  }

  public void testInheritedAnnotation(PrintStream out) throws IOException {
    Class c = Sub.class;
    boolean inProgress = c.isAnnotationPresent(InProgress.class);
    if (inProgress) {
      out.println("Sub is In Progress");
    } else {
      out.println("Sub is not In Progress");
    }
  }

  public void testGetAnnotation(PrintStream out) 
    throws IOException, NoSuchMethodException {

    Class c = AnnotationTester.class;
    AnnotatedElement element = c.getMethod("calculateInterest", 
                                  float.class, float.class);

    GroupTODO groupTodo = element.getAnnotation(GroupTODO.class);
    String assignedTo = groupTodo.assignedTo();

    out.println("TODO Item on Annotation Tester is assigned to: '" + 
        assignedTo + "'");
  }

  public void printAnnotations(AnnotatedElement e, PrintStream out)
    throws IOException {

    out.printf("Printing annotations for '%s'%n%n", e.toString());

    Annotation[] annotations = e.getAnnotations();
    for (Annotation a : annotations) {
      out.printf("    * Annotation '%s' found%n", 
        a.annotationType().getName());
    }
  }

  public static void main(String[] args) {
    try {
      ReflectionTester tester = new ReflectionTester();

      tester.testAnnotationPresent(System.out);
      tester.testInheritedAnnotation(System.out);

      tester.testGetAnnotation(System.out);

      Class c = AnnotationTester.class;
      AnnotatedElement element = c.getMethod("calculateInterest", 
                                    float.class, float.class);      
      tester.printAnnotations(element, System.out);
    } catch (Exception e) {
      e.printStackTrace();
    } 
  }
}

⌨️ 快捷键说明

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