Мне нужно создать подкласс существующего класса, что я знаю, как сделать, но мне нужно иметь возможность создавать подкласс на основе существующего суперкласса без изменения суперкласса.
Например:
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.
EDIT
Важное ограничение, я не думал, что все скажут мне отредактировать Foo. Я не могу изменить Foo, этот класс находится в библиотеке, которую я не могу редактировать, поэтому то, что я хочу сделать, должно быть сделано без редактирования Foo.
EDIT2
Вот собственно Foo, это класс ChunkProvider из Minecraft.
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;
}