Java 如何将所有类放在一个泛型类类型下?

Java 如何将所有类放在一个泛型类类型下?,java,class,generics,subclass,Java,Class,Generics,Subclass,我有n个java类,每个类都包含自己的变量集。 我有一个方法,它必须根据某些条件接受这n个类中的一个作为参数。 如何将所有这些类作为泛型类型的子类,以便我的方法签名接受所有这些不同的类型?我不想使方法过载。如果将类型“Object”用于参数,我将失去传递的输入参数类的性质。定义一个所有类都实现的接口。然后在方法头部声明您的参数作为该接口的类型。定义一个所有类都实现的接口。然后在方法头部声明您的参数作为该接口的类型 如何将所有这些类作为泛型类型的子类,以便我的方法签名接受所有这些不同的类型 简单地

我有n个java类,每个类都包含自己的变量集。 我有一个方法,它必须根据某些条件接受这n个类中的一个作为参数。
如何将所有这些类作为泛型类型的子类,以便我的方法签名接受所有这些不同的类型?我不想使方法过载。如果将类型“Object”用于参数,我将失去传递的输入参数类的性质。

定义一个所有类都实现的接口。然后在方法头部声明您的参数作为该接口的类型。

定义一个所有类都实现的接口。然后在方法头部声明您的参数作为该接口的类型

如何将所有这些类作为泛型类型的子类,以便我的方法签名接受所有这些不同的类型

简单地创建一个抽象类,MySuperClass,这个类由您想要传递给该方法的所有类继承。这个超类具有通用的功能和属性

另一种方法是,如果您的子类可能扩展其他类;或者,类之间没有什么共同点,只是它们都被传递给了你的方法。你可以有一个接口,比如说MySuperClass。理想情况下,我喜欢从I开始的接口,比如IMySuperClass

我不想使方法过载

一旦您准备好了超类或接口,您的方法签名将类似于myMethodParam1 val1、MySuperClass myObj、Param3 val3

简单

如何将所有这些类作为泛型类型的子类,以便我的方法签名接受所有这些不同的类型

简单地创建一个抽象类,MySuperClass,这个类由您想要传递给该方法的所有类继承。这个超类具有通用的功能和属性

另一种方法是,如果您的子类可能扩展其他类;或者,类之间没有什么共同点,只是它们都被传递给了你的方法。你可以有一个接口,比如说MySuperClass。理想情况下,我喜欢从I开始的接口,比如IMySuperClass

我不想使方法过载

一旦您准备好了超类或接口,您的方法签名将类似于myMethodParam1 val1、MySuperClass myObj、Param3 val3


简单。

如果您不能像其他人建议的那样使用多态性,那么您可以使用Java泛型来实现这一点:

例如,这可用于将任何对象放入缓存:

public <T> void doSomethingWithObject(final T object) {
    ...
}
你可以这样称呼它:例如,使用字符串

yourInstance.<String> doSomethingWithObject(object);

如果您不能像其他人建议的那样使用多态性,那么您可以使用Java泛型来实现这一点:

例如,这可用于将任何对象放入缓存:

public <T> void doSomethingWithObject(final T object) {
    ...
}
你可以这样称呼它:例如,使用字符串

yourInstance.<String> doSomethingWithObject(object);
这是你想要的吗

public interface common<T extends common<?>> {
    public void commonMethod(T param, ...);
}

public class child implements common<child> {
    public void commonMethod(child param, ...) {
        ...
    }
}
这是你想要的吗

public interface common<T extends common<?>> {
    public void commonMethod(T param, ...);
}

public class child implements common<child> {
    public void commonMethod(child param, ...) {
        ...
    }
}

我试过这种方法。但是我必须在方法中显式地键入cast对象以恢复其行为。不,如果接口定义了所有需要的方法,则不需要强制转换。此外,你的类应该有一些共同的东西,所以接口,否则你的设计可能是错误的,或者你应该考虑重载。那么你想要什么?您是否正在寻找如何编写一个方法,该方法接受泛型类型,并且不强制转换它就可以接受所有子类的所有方法?:-?我试过这种方法。但是我必须在方法中显式地键入cast对象以恢复其行为。不,如果接口定义了所有需要的方法,则不需要强制转换。此外,你的类应该有一些共同的东西,所以接口,否则你的设计可能是错误的,或者你应该考虑重载。那么你想要什么?您是否正在寻找如何编写一个方法,该方法接受泛型类型,并且不强制转换它就可以接受所有子类的所有方法?:-?与实现接口相同。我必须在方法内部显式地键入cast。如果没有公共功能,我建议重载该方法。若有共同的功能,那个么抽象事物并传递给相同的方法是有意义的。这和实现接口是一样的。我必须在方法内部显式地键入cast。如果没有公共功能,我建议重载该方法。如果有共同的功能,那么抽象事物并传递给相同的方法是有意义的。这看起来很有希望。我会试试这个看起来很有希望。我试试这个