Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有不同方法参数的Java接口_Java_Interface - Fatal编程技术网

具有不同方法参数的Java接口

具有不同方法参数的Java接口,java,interface,Java,Interface,我希望有一个接口,允许我使用不同参数的方法。假设我有一个接口: public interface Stuff { public int Add(); } 我有两个类A和B实现这个接口 public class CLASS A implements Stuff{ public int Add(int id); } public class CLASS B implements Stuff{ public int Add(String name); } 如何实现

我希望有一个接口,允许我使用不同参数的方法。假设我有一个接口:

public interface Stuff {
    public int Add();
 }
我有两个类A和B实现这个接口

public class CLASS A implements Stuff{
    public int Add(int id);
}  


public class CLASS B implements Stuff{
    public int Add(String name);
}

如何实现这一点?

要么重载方法:

public interface Stuff {

    public int add(String a);
    public int add(int a);

 }
或者检查继承中的共同点

public interface Stuff {

    public int add(Object a);

 }
或者使用泛型

public interface Stuff<T> {

    public int add(T a);

 }
公共接口的东西{
公共int add(TA);
}

您可以编写一个用于添加某些类型的通用接口,如下所示:

public interface Addable<T> {
    public int add(T value);
}
公共接口可添加{
公共整数加总(T值);
}
然后通过

public class ClassA implements Addable<Integer> {
    public int add(Integer value) {
        ...
    }
}

public class ClassB implements Addable<String> {
    public int add(String value) {
        ...
    }
}
公共类ClassA实现了可添加{
公共整数加法(整数值){
...
}
}
公共类ClassB实现了可添加的{
公共整数加法(字符串值){
...
}
}

您需要重写该方法

public class CLASS A implements Stuff{
    public int add(int a ,int b){
        int result=a+b;
        return result;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
       A ab=new A();
       ab.add(3, 4);
       System.out.println(ab.add(3, 4));
    }

}

这是您想要的吗?

两个选项都可用,但我个人更喜欢泛型。您如何称呼这一选项polymorphically@station就像你用多态性来称呼其他事物一样。