我正在使用Java反射进行大量工作,并且正在使用地图存储应用程序中每个bean的元数据。我使用className作为键,所以问题是当询问bean的className时。
bean.getClass().getName()
我可以得到两个不同的结果,具体取决于bean是否是延迟加载的(有些关系是延迟的,有些不是,但是我想同时使用它们。
例如,类:
package com.factorit.beans;<br>
public class Task implements java.io.Serializable {
如果在正常的加载对象中调用,它将返回:
com.factorit.beans.Task
但是如果在惰性初始化对象中调用,它将返回
com.factorit.beans.Task$$EnhancerByCGLIB$$f9d61939
我想知道是否有办法做到这一点,或者我是否必须解析String。
非常感谢您的帮助或建议。
编辑:
只是添加一些信息:
我的惰性注释看起来像这样:
@javax.persistence.ManyToOne(fetch = javax.persistence.FetchType.LAZY)
我正在使用Struts 2.1.8.1,Hibernate 3和Spring 2.5.6。
最佳答案
如果正在调试struts2-json-plugin 2.1.8.1,并且在方法JSONWritter.bean(Object object)
中
我发现他们正在使用这条线
if (clazz.getName().indexOf("$$EnhancerByCGLIB$$") > -1) {
因此,即使他们必须解析字符串,我也认为没有更好的方法。
谢谢@TomaszNurkiewicz的帮助。