【发布时间】:2018-08-21 23:15:02
【问题描述】:
我正在加载一个 groovy 脚本,我需要以下类:
import java.util.function.Function
import java.util.function.Supplier
class MaskingPrintStream extends PrintStream {
private final Function<String,String> subFunction
private final Supplier<String> secretText
public MaskingPrintStream(PrintStream out, Supplier<String> secretText, Function<String,String> subFunction) {
super(out);
this.subFunction = subFunction;
this.secretText = secretText;
}
@Override
public void write(byte b[], int off, int len) {
String out = new String(b,off,len);
String secret = secretText.get();
byte[] dump = out.replace(secret, subFunction.apply(secret)).getBytes();
super.write(dump,0,dump.length);
}
}
现在我将它保存在一个名为 MaskingPrintStream.groovy 的文件中。但是,通过这样做,我只能将这个类作为默认创建的与文件名对应的类的内部类来访问。
我想要工作的是更像这样的代码:
def stream = evaluate(new File(ClassLoader.getSystemResource('MaskingPrintStream.groovy').file))
但正如您所见,我需要在它准备好之前给它一些值。也许我可以将该类加载到 JVM 中(不确定如何从另一个 groovy 脚本中加载),然后以老式方式实例化它?
另一个问题是:我如何设置它,这样我就没有这种嵌套的类排列?
【问题讨论】:
标签: groovy