接口(两种方法,不同的返回类型取决于类)Java

hal*_*os1 5 java interface

扩展接口的任何类都必须实现接口中声明的方法.不确定这是否可行,但我想做的是以下内容:

interface test {
   ____ get();
}

class A extends test {
  int val;

  A(int x) {
    val = x;
  }

  int get() {
    return Val;
  } 


  class B extends test {
  String val;

  B(String x) {
    val = x;
  }

  String get() {
    return Val;
  } 
Run Code Online (Sandbox Code Playgroud)

是否可以使用能够返回两种不同数据类型的方法签名?

zap*_*apl 15

不完全相同,但您可以使用泛型类型参数.

interface Test<T> {
    T get();
}

class A implements Test<Integer> {
    int val;

    A(int x) {
        val = x;
    }

    @Override
    public Integer get() {
        return val;
    }
}

class B implements Test<String> {
    String val;

    B(String x) {
        val = x;
    }

    @Override
    public String get() {
        return val;
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,您必然会使用,Integer因为泛型不适用于基元.

另请注意,同一接口的这2个版本现在基本上是2个不同的接口.