有没有一种干净的方法来定义一个java接口方法,它对每个实现类都有不同的参数?

jqjz2hbq  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(301)

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

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) { ... }
}

我觉得这是不可能的,但是必须有某种方法告诉用户这些类中的每一个都有一个 action 方法;也许有一种方法可以让它动态地接受参数?
编辑:如果我们不知道只有一个参数呢?例如,这样的事情可能吗?

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

我觉得这是一个非常奇怪的问题,所以我会尽量提供更多的背景。我在做一个纸牌游戏,有不同的动作卡,做不同的事情,需要不同的信息。我以为这里应该有一个操作卡接口,但后来我遇到了如何指定的问题 action 当每个实现类需要完全不同的参数和不同数量的参数,而不是它们以不同的方式实现完全相同的方法或它们各自需要相同数量的参数时。基于这个原因,我的理解是泛型在这里不起作用,但也许我错了,或者有更好的方法来实现这一点;也许界面从一开始就错了?

o75abkj4

o75abkj41#

您可以使用泛型:

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; }
}

泛型只能用于对象类型,因此必须使用基本 Package 器而不是基本体。

相关问题