假设我有一个项目,其中包含许多不同种类的对象,但是它们都有一个实例变量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。让CarAppleBee通过返回Xholder实现X。然后,您当前的GetX方法是不必要的;现在,任何原本称为GetX(yourObject)的东西都将称为yourObject.getX()
GetX中使用反射。通过getClass()获取对象的类,并通过Field获取类的getField,并传递变量名称"X"。从那里您可以获得价值。


第一种选择是最好的,因为反射速度较慢且更容易出错。

10-08 02:28