我需要创建现有类的子类,我知道该怎么做,但我需要能够基于现有超类创建子类,而无需修改超类。
例如:
public class Foo
{
public Foo(int a)
{
_a = a;
}
private int _a;
}
public class Bar extends Foo
{
public Bar(int a, int b)
{
super(a);
_b = b;
}
public Bar(Foo foo, int b)
{
???? //<----What do I do here?
_b = b;
}
private int _b;
}
public static class Baz
{
static void Main(String[] args)
{
Foo foo = new Foo(1);
Bar bar = new Bar(foo, 2); //<---- How do I set this up?
}
}
所以在上面的例子中,它将使用 Foo 的现有实例并将其转换为 Bar 并将 _b 字段设置为 2。
编辑
重要的约束,我不认为每个人都会告诉我编辑 Foo. 我无法更改 Foo,该类在我无法编辑的库中,所以我想做的事情需要在不编辑 Foo 的情况下完成。
编辑2
这是实际的 Foo,它是来自 Minecraft 的 ChunkProvider 类。
public class ChunkProvider
implements IChunkProvider
{
public ChunkProvider(World world, IChunkLoader ichunkloader, IChunkProvider ichunkprovider)
{
chunkSet = new HashSet();
chunkMap = new HashMap();
chunkList = new ArrayList();
field_28064_b = new EmptyChunk(world, new byte[32768], 0, 0);
field_28066_g = world;
field_28069_d = ichunkloader;
field_28070_c = ichunkprovider;
}
//(Snip) There are no GetXXX members for the below fields.
private Set chunkSet;
private Chunk field_28064_b;
private IChunkProvider field_28070_c;
private IChunkLoader field_28069_d;
private Map chunkMap;
private List chunkList;
private World field_28066_g;
}