使用 'Reflect' 获取参数值
Get parameter value using 'Reflect'
我还在玩Java,还没体验过....
好的,我的问题是:
是否可以动态获取 class 字段的值?
这里有一个例子: 'My_Zoo' 是我的 class,它可以有不同的字段 'animal',即。 dog1, dog2, chitchen1,...
但我想动态获取它们的值(即公共字段'Number_of_arms')。
因此,对于 class My_Zoo 我只有一个字段变量,我想从中获取值 'Number_of_arms'.
之所以使用abstract class,是因为我想对系统说:
'Field字段是'animal'类型然后给我参数值'Number_of_arms''
可能吗?
public class My_Zoo{
public abstract class Animal{
String name;
String color;
int Number_of_arms;
public String getName(){
return name;
}
public int getNumber_of_arms(){
return Number_of_arms;
}
}
public class Dog extends Animal{
public Dog(String name, String color){
this.name = name;
this.color = color;
this.Number_of_arms = 4;
}
}
public class Chicken extends Animal{
public Chicken(String name, String color){
this.name = name;
this.color = color;
this.Number_of_arms = 2;
}
}
Dog dog_Charlie = new Dog("Charlie", "black");
Dog dog_Bobo = new Dog("Bobo", "brawn");
Chicken chicken_Princess = new Chicken("Princess", "brawn");
public My_Zoo(){
Field[] fields = this.getClass().getDeclaredFields();
int Number_of_arms;
for (Field field: fields){
??? Number_of_arms = field...Number_of_arms ???
}
}
}
在代码中,缺少行 ??? Number_of_arms = field...Number_of_arms ???
。我必须使用什么?
谢谢
希望对您有所帮助:
for (Field field : fields) {
Animal temp = (Animal) field.get(this);
System.out.println(temp.getName() + ": " + temp.getNumber_of_arms());
}
}
是的,有可能。
示例:
您的对象是:动物动物;
并且您想获取动物对象中字段的值。
Field[] fields = Animal.class.getDeclaredFields();
for(Field field:fields){
if(field.getName().contains("Number_of_arms")){
int Number_of_arms = field.getInt(animal);
}
}
https://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html
我还在玩Java,还没体验过.... 好的,我的问题是: 是否可以动态获取 class 字段的值? 这里有一个例子: 'My_Zoo' 是我的 class,它可以有不同的字段 'animal',即。 dog1, dog2, chitchen1,...
但我想动态获取它们的值(即公共字段'Number_of_arms')。
因此,对于 class My_Zoo 我只有一个字段变量,我想从中获取值 'Number_of_arms'.
之所以使用abstract class,是因为我想对系统说: 'Field字段是'animal'类型然后给我参数值'Number_of_arms''
可能吗?
public class My_Zoo{
public abstract class Animal{
String name;
String color;
int Number_of_arms;
public String getName(){
return name;
}
public int getNumber_of_arms(){
return Number_of_arms;
}
}
public class Dog extends Animal{
public Dog(String name, String color){
this.name = name;
this.color = color;
this.Number_of_arms = 4;
}
}
public class Chicken extends Animal{
public Chicken(String name, String color){
this.name = name;
this.color = color;
this.Number_of_arms = 2;
}
}
Dog dog_Charlie = new Dog("Charlie", "black");
Dog dog_Bobo = new Dog("Bobo", "brawn");
Chicken chicken_Princess = new Chicken("Princess", "brawn");
public My_Zoo(){
Field[] fields = this.getClass().getDeclaredFields();
int Number_of_arms;
for (Field field: fields){
??? Number_of_arms = field...Number_of_arms ???
}
}
}
在代码中,缺少行 ??? Number_of_arms = field...Number_of_arms ???
。我必须使用什么?
谢谢
希望对您有所帮助:
for (Field field : fields) {
Animal temp = (Animal) field.get(this);
System.out.println(temp.getName() + ": " + temp.getNumber_of_arms());
}
}
是的,有可能。
示例:
您的对象是:动物动物;
并且您想获取动物对象中字段的值。
Field[] fields = Animal.class.getDeclaredFields();
for(Field field:fields){
if(field.getName().contains("Number_of_arms")){
int Number_of_arms = field.getInt(animal);
}
}
https://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html