java - 获取类的字段

标签 java hibernate reflection

Field[] fields = <class name>.getClass().getDecdlaredFields();
for(Field field: fields) {
     String fieldName = field.getName();
     log.info(" Fieldname : "+ fieldName);
}

这是给我构造函数的名称,其中包含这样的随机字符:

CGLIB$getPTI$25
CGLIB$setPTI$26

这里的类其实就是一个hibernate映射类。它映射来自数据库的数据。

最佳答案

它们不是随机字符。它们是由相关类声明的字段,大概是自动生成的。在机器生成的代码中使用 $ 是很常见的(甚至受到 JLS 的鼓励)。

请注意 CGLIB是一个代码生成库,大概就是在这里创建类的原因。

现在,如果您认为您正在查看一个您的 类,那么您不是 - 您正在查看由 Hibernate 动态创建的子类。打印出 foo.getClass().getName() 来查看。如果您试图找到在您的 类中声明的字段,您将需要沿着继承层次结构向上走,直到到达您的类。 (查看生成的类是什么样的,了解如何检测何时到达真实类。)

关于java - 获取类的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9937604/

相关文章:

java - 在富客户端(非网络)中实现单点登录?

java - 计算字符串中特定字符的数量

java - 如何在 session 关闭后使用 hibernate 访问延迟加载的字段?

Java Reflect 2 对象

c# - 反射(reflect)接口(interface)的所有属性,包括继承的属性?

java - 如果禁用文本字段,如何防止从文本字段读取输入

java - 如何在Java中使用单独的线程调用方法?

java - Hibernate 查询在论坛问题中搜索内容

java - JPA、继承和instanceof

Java/安卓/ Kotlin : Reflection on private Field and call public methods on it