Как получить аннотацию, получив метод исключения в Java?

На этот раз я хочу получить аннотацию из сгенерированного исключения. Мой пример кода выглядит следующим образом:

public class P {

    @MyAnnotation(stringValue = "FirstType", intValue = 999)
    public void test() throws Exception {
        // ...
        throw new NullPointerException();
   }

    @MyAnnotation(stringValue = "SecondType", intValue = 111)
    public void test(int a) throws Exception {  
        // ...
       throw new NullPointerException();
    }
}

Приведенный выше класс содержит 2 метода, и оба из них генерируют исключение NullPointerException.

Теперь я могу использовать callerElement, чтобы получить исключение и узнать имя пакета, имя класса и номер строки, которые вызывают исключение. Вот мой код:

public class CallP {
    public static void main(String[] argv){
        P class_p = new P();

        StackTraceElement[] callerElement = null;
        try{
            class_p.test();
        }catch(Exception e){
            callerElement = e.getStackTrace();
            System.out.println(callerElement[0].toString());
        }
   }
}

В окне консоли я вижу сообщение

StackoverflowQuestion.P.test (P.java:9)

Мои вопросы 1. Как получить аннотацию в предложении catch? 2. При перегрузке метода (в классе P у меня есть два метода, называемых test), как получить аннотацию?

Это все мои вопросы. Спасибо, что потратили время на чтение.

6
задан Charles Wu 17 January 2011 в 04:18
поделиться