0

我在 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

我想知道是否有办法得到这个,或者我是否必须解析字符串。

非常感谢您的任何帮助或建议。

编辑: 只是添加一些信息:我的懒惰注释看起来像这样:

@javax.persistence.ManyToOne(fetch = javax.persistence.FetchType.LAZY)

我正在使用 Struts 2.1.8.1、Hibernate 3 和 Spring 2.5.6。

4

1 回答 1

1

如果是在调试struts2-json-plugin 2.1.8.1,在方法中JSONWritter.bean(Object object) 我发现他们正在使用这一行

if (clazz.getName().indexOf("$$EnhancerByCGLIB$$") > -1) {

所以,即使他们也必须解析字符串,我想没有更好的方法。感谢@TomaszNurkiewicz 的帮助。

于 2012-10-23T16:17:29.180 回答