接口方法Java中的泛型类型

pav*_*163 1 java generics methods interface

我的界面中有这个方法:

  public String getValue();
Run Code Online (Sandbox Code Playgroud)

字符串只是这里的例子,我不想返回一个字符串.

我希望将该方法放在将返回int,chars或bools的类中(取决于类).例如,我有一个实现我的界面的Animal类,并且有这个方法.我希望它在动物中调用此方法时返回一个int.我有另一个具有此方法的类人员,并且当在Person上调用此方法时,我希望它返回一个char.

public class Animal implements myInterface {
  @Override
  public int getValue() {
    return 5;
  }
}

public class Person implements myInterface {
  @Override
  public char getValue() {
    return 'c';
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道我必须用泛型来做这件事.但我究竟该怎么做呢?

如果我在接口中使用泛型类型替换String,例如:

public <T> T getValue();
Run Code Online (Sandbox Code Playgroud)

然后它说我不能从int(或char)转换为T.

我该怎么办?谢谢.

Tas*_*kos 5

正确的方法是使用通用接口:

public interface MyInterface<T> {
  public T getValue();
}

public class Animal implements MyInterface<Integer> {
  @Override
  public Integer getValue() {
    return 5;
  }
}
Run Code Online (Sandbox Code Playgroud)

然而,这真的像一个X/Y问题; 更不用说它是非常低效的,装箱和拆箱所有这些原语.

你想要实现什么目标?你的目标是什么?