gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:18:15 25 4
gpt4 key购买 nike

给定以下两个类 FooFooBar:

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() {...}
}

如何实现一个类,其字段可以是 FooFooBar?例如,在下面的类Example中,我希望getFoo()方法返回Foo的实例或实例>FooBar 以便所有访问器都可用:

public class Example {
private Foo fooField;

// Not correct!
public Foo getFooField() {...}
}

我认为我需要实现一个泛型类作为包装器,但我不确定如何将其绑定(bind)到 Example 类中。

public interface FooWrapper<T extends Foo> {
// Would I define some getter here?
// Is this the right track?
}

更新:澄清一下,Example没有扩展FooExample 是一个完全不同的类型,包含 Foo/FooBar 类型的字段。

最佳答案

您可以使您的 Example 类变得通用,如下所示:

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

然后为 FooFooBar 创建参数化实例:

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());

关于java - 具有返回正确类型的 getter 的泛型类型字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21262808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com