如果你让Foo具有正确的类型,你可以做你想要的
public class Foo<T> { T data; public Foo(T d) { this.data = d; } public T getData() { return data; } }
然后您的示例将用作:
Foo<String> foo = new Foo<>("123"); //passing String String foo = foo.getData(); //return String Foo<Float> foo = new Foo<>(123f); //passing float float foo = foo.getData(); //return float
的 编辑: 强> 原来的问题稍有更新。但是,基本问题仍然是Java方法必须声明其返回类型。如果可以使用,可以接近 covariant 通过扩展层次结构以某种方式返回。有例子 覆盖具有不同返回类型的方法 和 被覆盖的方法可以在返回类型上有所不同 。
covariant
人们还可以考虑采用工厂模式来协助该方法。所以它会
Foo foo = FooFactory.geetFoo(originalData); // the specific foo would vary String s = foo.getData();