是否可以为方法分配不同的返回类型

sim*_*mar 3 java generics

我的想法是有一个验证器接口,它有方法getRealValue().返回值取决于领域,它可能是String,IntegerLong值.

我的机会是:

  1. 我可以将返回类型指定为,Object并在每次调用此方法后使用转换.(RuntimeError如果错误的铸造发生).

  2. 我可以在实例化时使用泛型返回类型到验证器(我仍然需要使用强制转换但在方法内getRealValue只有一次).不过RuntimeError,如果我会忘记通过返回类型或传递错误的类型.

如果有办法我可以在验证器中存储返回类型并使用它?

Men*_*ena 10

对于您的第一点,ClassCastException如果出现不适当的演员表,则无法在运行时获取.

在你的第二种情况下,你不需要施放,见这里的例子:

public interface Foo<T> {
    public T getValue(); 
}
Run Code Online (Sandbox Code Playgroud)

......然后在其他地方:

public class Blah<T> implements Foo<T> {
    @Override
    public T getValue() {
        // TODO write the code
        // note that because of type erasure you won't know what type T is here
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

......然后,在其他地方:

Blah blah1 = new Blah<String>();
String s = blah1.getValue();
Blah blah2 = new Blah<Long>();
// etc.
Run Code Online (Sandbox Code Playgroud)

最后,这里有一些文献给你:

  • Java中的泛型
  • Java中的继承(有关于转换的部分)