繁体   English   中英

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

[英]How to make JAVA method that accepts any object as parameter?

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

  1. 使用一个返回int方法getX()创建一个接口,例如Xholder CarAppleBee通过返回X实现Xholder 然后,不需要当前的GetX方法; 任何可以调用GetX(yourObject)现在都可以调用yourObject.getX()

  2. GetX使用反射。 通过getClass()获取对象的类,并通过getField获取类的Field ,并传递变量名"X" 从那里您可以获取价值。

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

有两种方法可以解决:

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

话虽这么说,您的方法接口是不正确的:您不希望ANY对象,而只希望拥有X属性的对象。 从设计的角度来看,这意味着第一个解决方案是最正确的。

使所有类都从基本抽象类扩展(说X包含MyObject),并使GetX参数类型为MyObject。

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

您可以使用Java Reflections解决此问题。 你可以在这里学习更多

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM