是否有一种干净的方法来定义每个实现 class 具有不同参数的 Java 接口方法?

Is there a clean way of defining a Java interface method that has different parameters for each implementation class?

例如,假设我有一个定义方法 action(...) 的接口,并且我有三个(实际上更多)class 使用不同参数实现 action 的 es :

public class Class1 implements SomeInterface {
    public int action(int num) { ... }
}

public class Class2 implements SomeInterface {
    public String action(String string) { ... }
}

public class Class3 implements SomeInterface {
    public double action(double dub) { ... }
}

我觉得这不可能,但必须有某种方式告诉用户这些 class 中的每一个都有一个 action 方法;也许有办法让它动态接受参数?

编辑: 如果我们不知道只有一个参数怎么办?例如,这样的事情可能吗?

interface SomeInterface<T, T, ..., T> {
    T action(T t1, S s, ..., U u);
}

我觉得这是一个非常难运行ge 的问题,所以我将尝试提供更多背景信息。我正在开发一款纸牌游戏,其中有不同的动作卡可以做不同的事情,并且需要不同的信息。我认为这里应该有一个 Action Card 接口,但后来我 运行 讨论了当每个实现 class 需要完全不同的参数和不同的 [=26= 时如何指定 action 的问题]number 个参数,而不是它们以不同的方式实现完全相同的方法,或者它们每个都需要相同数量的参数。出于这个原因,我的理解是泛型在这里不起作用,但也许我错了,或者有更好的方法可以做到这一点;也许界面从一开始就是错误的方式?

您可以使用 generics:

interface SomeInterface<T> {
    T action(T t);
}

class Class1 implements SomeInterface<Integer> {
    public Integer action(Integer i) { return null; }
}

class Class2 implements SomeInterface<String> {
    public String action(String s){ return null; }
}

class Class3 implements SomeInterface<Double> {
    public Double action(Double d) { return null; }
}

泛型只能用于对象类型,因此您必须使用基元包装器而不是基元。