如何获取在java类中声明的字段的原始类



这里,假设我有类名:

class Name {
  String firstName, lastName;
  // getters and setters, etc.
}
and then Name class's object is declared somewhere in other class :
class Other {
  Name name;
  // getter and setters, etc.
}

现在,如果我做一些类似的事情:

Other o = new Other();
Field[] fields = o.getClass().getDeclaredFields();
fields[0] --> is 'name' the Object of 'Name' class

但当我说field[0].getClass():时

它给了我java.lang.reflect.Field类对象,而不是Name类对象。

如何从'name'

这样的字段中获取原始类对象

Field.getType方法返回一个class对象,该对象标识由该field对象表示的字段的声明类型。

This should help

Other o = new Other();
Class<?> classTemp1 = o.getClass();
Field[] allFields = classTemp1.getDeclaredFields();

现在,您可以在每个字段中查询名称、类型

fields[i].getType()

请检查http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Field.html#getType()

getType()返回一个Type对象,该对象表示由该field对象表示的字段的声明类型。

field[0].getClass()

将返回表示字段[0]的Type对象,该字段显然是字段[0]。

基本上,您需要向字段询问特定实例的值,比如

Name name = (Name)fields[0].get(o);

现在。像这样进行盲转换是非常危险的,我可能只是先将其分配给Object,然后再执行instanceof,或者可能使用Field#getName来确定字段的名称并从中采取行动。。。

nb-我会提到getType,但叶夫根尼·多罗费耶夫击败了我,我不想从他的回答中拿走

根据Evgeniy的回答,这一行就是您想要的:

String actualClassName = fields[0].getType().getName();

相关内容

  • 没有找到相关文章

最新更新