流的动态链接

时间:2017-02-01 18:55:00

标签: java

我需要弄清楚为Filtered Streams动态创建构造函数的方法 我有一节课:

public class Chain1 extends myFilterInputStream


//constructor 1
public Chain1 (InputStream is, RepeatableData data) {
    super(is,data.getData(),data.getKey());
}
//constructor 2
public Chain1 (InputStream in, RepeatableData[] data) {
//return new Chain1 (new Chain1 (is, data[1].getData(),data[1].getKey()), data[2].getData(), data[2].getKey());

  for (int i=0;i<data.length;i++) {
     //create the line above dynamically
  }

}

1 个答案:

答案 0 :(得分:0)

我认为你必须用像工厂方法之类的东西替换你的第二个构造函数,因为你需要在将链传递给超级构造函数之前构建链。

public static Chain1 createChain1(InputStream in, RepeatableData[] data){
    if(data == null || data.length == 0){
        // handle invalid params
    }
    InputStream nextStream = in;       
    for (int i = 0; i < data.length; i++) {
        nextStream  = new Chain1(nextStream, data[i]);           
    }
    return (Chain1)nextStream;
}