有没有办法获取CDI托管实例的真实类名?我需要在其上匹配真实的类名,但是在调用getClass方法时我获得了Client Weld Proxy名称。非常感激。
据我所知,没有可靠的方法来掌握代理背后的真正的类。事实上,毕竟可能没有真正的课程。我最后做的是检查classname字符串,看它是否匹配类名称附带的疯狂字符串Weld。如果不是,那么你正在处理真正的阶级。但如果是,请获取代理的超类。那是你要找的班级。
你必须查看Weld实现,看看如果getInvocationHandler然后调用方法,InvocationHandler是否会实际给你。
尽管距原始问题已经过去了五年,但这可能会帮助可能遇到同样问题的人。您可以使用反射获取真实的类名。
bean.getClass().getSuperclass().getName()
与Weld合作