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/