我现在正在做一个简单的框架性质的东西,设计的调用该框架的示例代码如下:
@A("xxx") public class App{ public static void main(String[] args){ B.run(); } }
其中类App是框架用户自定义的类,他在main方法中调用了框架的API,并通过注解A配置了相关参数,因此我想在run方法中去取得注解A配置的值,请问该如何获取到呢?
ps:肯定是能拿到的,因为SpringBoot就有类似的设计(实际上我的这种想法就是借鉴的SpringBoot)
解决方案:
1. 让用户自己将class对象传进来
2. 使用:
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); Class<?> mainClass = null; if (stackTrace.length != 0) { StackTraceElement traceElement = stackTrace[stackTrace.length - 1]; try { mainClass = Class.forName(traceElement.getClassName()); } catch (ClassNotFoundException e) { LOGGER.warn(e.toString()); } }
查jdk文档,找 注解 和 反射 这两个小节。