假设我有一套
无关,生成
我想去上课
Decorate
public abstract class GeneratedDecorator<T> {
private T generated;
public T getGenerated() { return generated; }
public void setGenerated(T generated) { this.generated = generated; }
public abstract String getString();
public static class ClassA extends GeneratedDecorator<GeneratedClassA> {
@Override
public String getString() { return getGenerated().getThisString(); }
}
public static class ClassB extends GeneratedDecorator<GeneratedClassB> {
@Override
public String getString() { return getGenerated().getADifferentString(); }
}
}
现在,为了使用这个新的高级课程,我只想说:
GeneratedDecorator.ClassA a = new GeneratedDecorator.ClassA();
a.setGenerated(myGeneratedInstanceA);
a.getString();
到目前为止。。。但现在我想管理一系列这样的东西
Decorators
.
public abstract class DecoratorBundle<T extends GeneratedDecorator> {
private static final int MAX_ROWS = 10;
private T[] bundle;
DecoratorBundle() { bundle = createBundle(); }
public String getString(int index) { return bundle[index].getString(); }
public void setRow(??? generated, int index ) {
//check index of bundle, if null create a new instance of appropriate type and set bundle[index] = new instance
//call setGenerated on instance at index
}
protected abstract T[] createBundle();
public static class ClassA extends DecoratorBundle<GeneratedDecorator.ClassA> {
@Override
protected GeneratedDecorator.ClassA[] createBundle() {
return new GeneratedDecorator.ClassA[MAX_ROWS];
}
}
public static class ClassB extends DecoratorBundle<GeneratedDecorator.ClassB> {
@Override
protected GeneratedDecorator.ClassB[] createBundle() {
return new GeneratedDecorator.ClassB[MAX_ROWS];
}
}
}
我被困在这里。。。我想要这个
DecoratorBundle
拥有
setRow(??? generated, int index)
其中参数是
GeneratedDecorator
GeneratedClassA
或
GeneratedClassB
装饰包
bundle
数组。它目前能够实例化数组,但是我想让它用某种方法来创建一个新的
发电机发电机
-在一个
setRow
方法。
如果我在这件事上完全错了,那么我很乐意听到另一个想法。