![](/img/trans.png)
[英]How to make a method which accepts any number of arguments of any type in 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个选择。
使用一个返回int
方法getX()
创建一个接口,例如Xholder
。 让Car
, Apple
和Bee
通过返回X
实现Xholder
。 然后,不需要当前的GetX
方法; 任何可以调用GetX(yourObject)
现在都可以调用yourObject.getX()
。
在GetX
使用反射。 通过getClass()
获取对象的类,并通过getField
获取类的Field
,并传递变量名"X"
。 从那里您可以获取价值。
第一种选择是最佳选择,因为反射速度较慢且更容易出错。
有两种方法可以解决:
话虽这么说,您的方法接口是不正确的:您不希望ANY对象,而只希望拥有X属性的对象。 从设计的角度来看,这意味着第一个解决方案是最正确的。
使所有类都从基本抽象类扩展(说X包含MyObject),并使GetX参数类型为MyObject。
假设您知道可以通过将多态性概念与(抽象类的)接口或抽象方法一起使用来实现此目的;
您可以使用Java Reflections解决此问题。 你可以在这里学习更多
为什么不只使用java.lang.Object作为参数?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.