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 54 55 56 | interface Analyzer { int computeValue(); String performAnalysis(); } class AnalyzerImpl implements Analyzer { @Override public int computeValue() { return 5; } @Override public String performAnalysis() { return "Result: " + computeValue(); } } class AnalyzerDecorator implements Analyzer { Analyzer delegate; public AnalyzerDecorator(Analyzer delegate) { this.delegate = delegate; } @Override public int computeValue() { return delegate.computeValue(); } @Override public String performAnalysis() { return delegate.performAnalysis(); } } class Main { // Tweak an analyzer to return 1337. public static Analyzer tweakAnalyzer(Analyzer untweakedAnalyzer) { return new AnalyzerDecorator(untweakedAnalyzer) { @Override public int computeValue() { return 1337; // tweaked value! } }; } // Test the analyzer tweaking. public static void main(String[] args) { System.out.println(tweakAnalyzer(new AnalyzerImpl()).performAnalysis()); } } |
aW50ZXJmYWNlIEFuYWx5emVyIHsKICAgIGludCBjb21wdXRlVmFsdWUoKTsKICAgIFN0cmluZyBwZXJmb3JtQW5hbHlzaXMoKTsKfQoKCmNsYXNzIEFuYWx5emVySW1wbCBpbXBsZW1lbnRzIEFuYWx5emVyIHsKCiAgICBAT3ZlcnJpZGUKICAgIHB1YmxpYyBpbnQgY29tcHV0ZVZhbHVlKCkgewogICAgICAgIHJldHVybiA1OwogICAgfQoKICAgIEBPdmVycmlkZQogICAgcHVibGljIFN0cmluZyBwZXJmb3JtQW5hbHlzaXMoKSB7CiAgICAgICAgcmV0dXJuICJSZXN1bHQ6ICIgKyBjb21wdXRlVmFsdWUoKTsKICAgIH0KfQoKCmNsYXNzIEFuYWx5emVyRGVjb3JhdG9yIGltcGxlbWVudHMgQW5hbHl6ZXIgewogICAgQW5hbHl6ZXIgZGVsZWdhdGU7CiAgICBwdWJsaWMgQW5hbHl6ZXJEZWNvcmF0b3IoQW5hbHl6ZXIgZGVsZWdhdGUpIHsKICAgICAgICB0aGlzLmRlbGVnYXRlID0gZGVsZWdhdGU7CiAgICB9CgogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgaW50IGNvbXB1dGVWYWx1ZSgpIHsKICAgICAgICByZXR1cm4gZGVsZWdhdGUuY29tcHV0ZVZhbHVlKCk7CiAgICB9CgogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgU3RyaW5nIHBlcmZvcm1BbmFseXNpcygpIHsKICAgICAgICByZXR1cm4gZGVsZWdhdGUucGVyZm9ybUFuYWx5c2lzKCk7CiAgICB9Cn0KCgpjbGFzcyBNYWluIHsKICAgIAogICAgLy8gVHdlYWsgYW4gYW5hbHl6ZXIgdG8gcmV0dXJuIDEzMzcuCiAgICBwdWJsaWMgc3RhdGljIEFuYWx5emVyIHR3ZWFrQW5hbHl6ZXIoQW5hbHl6ZXIgdW50d2Vha2VkQW5hbHl6ZXIpIHsKICAgICAgICByZXR1cm4gbmV3IEFuYWx5emVyRGVjb3JhdG9yKHVudHdlYWtlZEFuYWx5emVyKSB7CiAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICBwdWJsaWMgaW50IGNvbXB1dGVWYWx1ZSgpIHsKICAgICAgICAgICAgICAgIHJldHVybiAxMzM3OyAgICAgICAgICAgICAgLy8gdHdlYWtlZCB2YWx1ZSEKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICAKICAgIC8vIFRlc3QgdGhlIGFuYWx5emVyIHR3ZWFraW5nLgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0d2Vha0FuYWx5emVyKG5ldyBBbmFseXplckltcGwoKSkucGVyZm9ybUFuYWx5c2lzKCkpOwogICAgfQp9Cg==
-
upload with new input
-
result: Success time: 0.03s memory: 245632 kB returned value: 0
Result: 5


