Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取java类中声明的字段的原始类_Java_Reflection_Field - Fatal编程技术网

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

如何获取java类中声明的字段的原始类,java,reflection,field,Java,Reflection,Field,现在,假设我有类名: 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();

现在,假设我有类名:

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
但是当我说
字段[0].getClass()

它给我
java.lang.reflect.Field
类对象,而不是名称类对象


如何从像'name'

这样的字段中获取原始的类对象基本上,您需要向字段询问特定实例的值,例如

Name name = (Name)fields[0].get(o);
现在。像这样进行盲投是相当危险的,我可能只是先将其分配给
对象
,然后执行
实例
,或者使用
字段#getName
来确定字段的名称并从中采取行动


注意-我想提到
getType
,但是Evgeniy Dorofev抢先一步,我不想从他的答案中抹去基本上,你需要向字段询问特定实例的值,比如

Name name = (Name)fields[0].get(o);
现在。像这样进行盲投是相当危险的,我可能只是先将其分配给
对象
,然后执行
实例
,或者使用
字段#getName
来确定字段的名称并从中采取行动


注意-我要提到
getType
,但是Evgeniy Dorofev击败了我,我不想从他的答案中抹去它。getType方法返回一个类对象,该类对象标识此字段对象表示的字段的声明类型。

字段。getType方法返回一个类对象,该类对象标识此字段表示的字段的声明类型这个字段是一个对象

fields[i].getType()
field[0].getClass()
请查收

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

fields[i].getType()
field[0].getClass()
将返回表示字段[0]的类型对象,该字段显然是字段[0]

请查收

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

fields[i].getType()
field[0].getClass()

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

根据Evgeniy的回答,这一行是您要查找的:

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

根据叶甫盖尼的回答,这一行是您要寻找的:

String actualClassName = fields[0].getType().getName();
这应该会有帮助
其他o=新的其他();
Class classTemp1=o.getClass();
Field[]allFields=classTemp1.getDeclaredFields();
现在,您可以查询每个字段的名称、类型等,这应该会有所帮助 其他o=新的其他(); Class classTemp1=o.getClass(); Field[]allFields=classTemp1.getDeclaredFields();
现在,您可以查询每个字段的名称、类型等