如何制作接受任何对象作为参数的JAVA方法?

时间:2015-01-15 17:49:18

标签: java object methods

假设我有一个包含许多不同种类对象的项目,但它们都有一个实例变量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;
}

5 个答案:

答案 0 :(得分:3)

您有2个选项。

  1. 使用一种返回Xholder的{​​{1}}方法创建一个界面,例如getX()。通过返回intCarAppleBee实施Xholder。然后,您当前的X方法是不必要的;任何可能调用GetX的内容现在都会调用GetX(yourObject)

  2. yourObject.getX()中使用反射。使用GetX获取对象的课程,并使用getClass()获取课程Field,并传递变量名称getField。从那里你可以获得价值。

  3. 第一个选项是最好的,因为反射速度较慢且容易出错。

答案 1 :(得分:2)

脱离我头顶的两种方式:

  • 使用定义getX()方法的所有对象共有的接口
  • 使用反射

话虽如此,你的方法接口是不正确的:你不要指望任何对象,而只指那些拥有那个X属性的对象。这意味着从设计的角度来看,第一个解决方案是最正确的。

答案 2 :(得分:0)

使所有类扩展自基础抽象类(包含X的Say MyObject)并使GetX参数类型为MyObject。

答案 3 :(得分:0)

假设您知道可以通过使用接口或抽象方法(抽象类)的多态概念来实现此目的;

您可以使用Java Reflections解决此问题。您可以更多地了解它here

答案 4 :(得分:0)

为什么不直接使用java.lang.Object作为参数?