既存のクラスのサブクラスを作成する必要があります。これは、その方法を知っていますが、スーパークラスを変更せずに、既存のスーパークラスに基づいてサブクラスを作成できる必要があります。
例えば:
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を編集せずに実行する必要があります。
EDIT2
これが実際の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;
}