Java 具有返回正确类型的getter的泛型类型字段?

Java 具有返回正确类型的getter的泛型类型字段?,java,Java,给定以下两类Foo和FooBar: public abstract class Foo { private String type; private int id; public String getType() {...} public int getId() {...} } public class FooBar extends Foo { private String extraField; public String getExtraField() {...

给定以下两类
Foo
FooBar

public abstract class Foo {
  private String type;
  private int id;

  public String getType() {...}
  public int getId() {...}
}

public class FooBar extends Foo {
  private String extraField;

  public String getExtraField() {...}
}
Example<Foo> fooExample = new Example<Foo>();
Foo foo = fooExample.getFooField();
System.out.println(foo.getId());
System.out.println(foo.getType());

Example<FooBar> fooBarExample = new Example<FooBar>();
FooBar fooBar = fooBarExample.getFooField();
System.out.println(fooBar.getId());
System.out.println(fooBar.getType());
System.out.println(fooBar.getExtraField());
如何实现一个字段可以是
Foo
FooBar
的类?例如,在下面的类
example
中,我希望
getFoo()
方法返回
Foo
的实例或
FooBar
的实例,以便所有访问器都可用:

public class Example {
  private Foo fooField;

  // Not correct!
  public Foo getFooField() {...}
}
我认为我需要实现一个泛型类作为包装器,但我不确定如何将它绑定到
示例
类中

public interface FooWrapper<T extends Foo> {
  // Would I define some getter here?
  // Is this the right track?
}
公共接口包装器{
//我可以在这里定义一些getter吗?
//这是正确的轨道吗?
}

更新:为了澄清,
示例
没有扩展
Foo
Example
是一种完全不同的类型,它包含一个类型为
Foo
/
FooBar

的字段。您可以将
Example
类设置为泛型,如下所示:

class Example<T extends Foo> {
    private T fooField;
    public T getFooField() { return fooField;}
}

FooWrapper
应该是一个装饰师吗?@SotiriosDelimanolis我想是的。我对泛型非常模糊,所以这只是一个潜在解决方案的想法。好吧,这清楚地回答了我的问题。我只希望它能解决我的问题:-/