1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | interface Analyzer { String performAnalysis(Calculator calculator); } interface Calculator { int computeValue(); } class CalculatorImpl implements Calculator { @Override public int computeValue() { return 5; } } class AnalyzerImpl implements Analyzer { @Override public String performAnalysis(Calculator calculator) { return "Result: " + calculator.computeValue(); } } class CalculatorDecorator implements Calculator { Calculator delegate; public CalculatorDecorator(Calculator delegate) { this.delegate = delegate; } @Override public int computeValue() { return delegate.computeValue(); } } class Main { // Tweak a calculator to return 1337. public static Calculator tweakCalculator(Calculator untweakedCalculator) { return new CalculatorDecorator(untweakedCalculator) { @Override public int computeValue() { return 1337; // tweaked value! } }; } // Test the analyzer tweaking. public static void main(String[] args) { System.out.println(new AnalyzerImpl().performAnalysis(tweakCalculator(new CalculatorImpl()))); } } |
aW50ZXJmYWNlIEFuYWx5emVyIHsKICAgIFN0cmluZyBwZXJmb3JtQW5hbHlzaXMoQ2FsY3VsYXRvciBjYWxjdWxhdG9yKTsKfQoKaW50ZXJmYWNlIENhbGN1bGF0b3IgewogICAgaW50IGNvbXB1dGVWYWx1ZSgpOwp9CgpjbGFzcyBDYWxjdWxhdG9ySW1wbCBpbXBsZW1lbnRzIENhbGN1bGF0b3IgewogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgaW50IGNvbXB1dGVWYWx1ZSgpIHsKICAgICAgICByZXR1cm4gNTsKICAgIH0KfQoKY2xhc3MgQW5hbHl6ZXJJbXBsIGltcGxlbWVudHMgQW5hbHl6ZXIgewogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgU3RyaW5nIHBlcmZvcm1BbmFseXNpcyhDYWxjdWxhdG9yIGNhbGN1bGF0b3IpIHsKICAgICAgICByZXR1cm4gIlJlc3VsdDogIiArIGNhbGN1bGF0b3IuY29tcHV0ZVZhbHVlKCk7CiAgICB9Cn0KCmNsYXNzIENhbGN1bGF0b3JEZWNvcmF0b3IgaW1wbGVtZW50cyBDYWxjdWxhdG9yIHsKICAgIENhbGN1bGF0b3IgZGVsZWdhdGU7CiAgICBwdWJsaWMgQ2FsY3VsYXRvckRlY29yYXRvcihDYWxjdWxhdG9yIGRlbGVnYXRlKSB7CiAgICAgICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogICAgfQoKICAgIEBPdmVycmlkZQogICAgcHVibGljIGludCBjb21wdXRlVmFsdWUoKSB7CiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNvbXB1dGVWYWx1ZSgpOwogICAgfQp9CgoKY2xhc3MgTWFpbiB7CiAgICAKICAgIC8vIFR3ZWFrIGEgY2FsY3VsYXRvciB0byByZXR1cm4gMTMzNy4KICAgIHB1YmxpYyBzdGF0aWMgQ2FsY3VsYXRvciB0d2Vha0NhbGN1bGF0b3IoQ2FsY3VsYXRvciB1bnR3ZWFrZWRDYWxjdWxhdG9yKSB7CiAgICAgICAgcmV0dXJuIG5ldyBDYWxjdWxhdG9yRGVjb3JhdG9yKHVudHdlYWtlZENhbGN1bGF0b3IpIHsKICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgIHB1YmxpYyBpbnQgY29tcHV0ZVZhbHVlKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIDEzMzc7ICAgICAgICAgICAgICAvLyB0d2Vha2VkIHZhbHVlIQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH0KICAgIAogICAgLy8gVGVzdCB0aGUgYW5hbHl6ZXIgdHdlYWtpbmcuCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBBbmFseXplckltcGwoKS5wZXJmb3JtQW5hbHlzaXModHdlYWtDYWxjdWxhdG9yKG5ldyBDYWxjdWxhdG9ySW1wbCgpKSkpOwogICAgfQp9Cg==
-
upload with new input
-
result: Success time: 0.03s memory: 245632 kB returned value: 0
Result: 1337


