gpt4 book ai didi

java - 如何通过在 Java 中检索异常方法来获取注解?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:12 25 4
gpt4 key购买 nike

这次我想从抛出的异常中获取注解。我的示例代码是这样的:

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),如何获取注解?

这就是我所有的问题。感谢您花时间阅读。

最佳答案

您可以使用 getClassName getMethodName() , 获取类名和方法名,然后使用反射获取注解。

提示: Class.forName(...)然后,klass.getMethod(...)getDeclaredMethod(...)或任何其他变体,然后是 method.getAnnotations()或其他变体。国际海事组织, getMethod(String name, Class<?>... parameterTypes) 适合您的需要,您可以通过参数类型来获得所需的方法。

注意:我们无法找到它。唯一的区别是行号。我怀疑我们是否可以利用它来获得所需的方法及其注释。因此,我想到的唯一解决方案是在这种情况下完全避免重载,并唯一地命名测试方法。当然,这将是一种解决方法,但您不认为该名称应该具有足够的描述性以说明其中要测试的内容。

关于java - 如何通过在 Java 中检索异常方法来获取注解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4709998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com