假设我有一个项目,其中包含许多不同种类的对象,但是它们都有一个实例变量X,我该如何制作一个接受任何类型的对象并返回X的方法?
虚拟代码示例:
class Car{
int X =19;
}
class Apple{
int X =21;
}
class Bee{
int X =32;
}
public int GetX(Object ANY_OBJECT_HERE){
return ANY_OBJECT_HERE.X;
}
最佳答案
您有2个选择。
使用一种返回Xholder
的方法getX()
创建一个接口int
。让Car
,Apple
和Bee
通过返回Xholder
实现X
。然后,您当前的GetX
方法是不必要的;现在,任何原本称为GetX(yourObject)
的东西都将称为yourObject.getX()
。
在GetX
中使用反射。通过getClass()
获取对象的类,并通过Field
获取类的getField
,并传递变量名称"X"
。从那里您可以获得价值。
第一种选择是最好的,因为反射速度较慢且更容易出错。