我有n个java类,每个类都包含自己的一组变量。 我有一个方法必须接受这n个类中的一个作为基于某些条件的参数。 如何将所有这些类作为泛型类的子类,以便我的方法签名接受所有这些不同的类型?我不想重载该方法。如果对参数使用'Object'类型,我将失去我传递的输入参数类的性质。
答案 0 :(得分:3)
定义所有类实现的接口。然后在方法头部声明您的参数作为该接口的类型。
答案 1 :(得分:2)
这是你想要的吗?
public interface common<T extends common<?>> {
public void commonMethod(T param, ...);
}
public class child implements common<child> {
public void commonMethod(child param, ...) {
...
}
}
答案 2 :(得分:1)
如何将所有这些类作为泛型类的子类,以便我的方法签名接受所有这些不同的类型?
简单地创建一个抽象类MySuperClass
,此类将由您希望传递给Method的所有类继承。这个超类具有共同的功能和属性。
另一方面,如果您的子类可能会扩展其他类;或者,类中没有任何共同点(除了它们都传递给你的方法的事实)你可以有一个接口,比如MySuperClass
(理想情况下,我喜欢从I开始的接口,比如{ {1}})。
我不想重载该方法。
准备好超类或界面后,您的方法签名看起来就像IMySuperClass
。
简单。
答案 3 :(得分:1)
如果您不能使用多态(如其他人所建议的那样),那么您可以使用Java泛型来执行此操作:
E.g。这可以用于将任何对象放入缓存中:
public <T> void doSomethingWithObject(final T object) {
...
}
你可以这样称呼它:例如使用String
yourInstance.<String> doSomethingWithObject(object);