import java.util.*;
import java.lang.*;
import java.io.*;
class OuterClass {
private int field;
public OuterClass(int field) {
this.field = field;
}
class InnerClass {
public int getOuterClassField() {
// we can access the field from the surrounding type's instance!
return OuterClass.this.field;
}
}
OuterClass parent = new OuterClass(42);
// prints '42'
System.
out.
println(parent.
new InnerClass
().
getOuterClassField());
// cannot work as it makes no sense
// System.out.println(new InnerClass().getOuterClassField());
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBPdXRlckNsYXNzIHsKICAgIHByaXZhdGUgaW50IGZpZWxkOwoKICAgIHB1YmxpYyBPdXRlckNsYXNzKGludCBmaWVsZCkgewogICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZDsKICAgIH0KCiAgICBjbGFzcyBJbm5lckNsYXNzIHsKICAgICAgICBwdWJsaWMgaW50IGdldE91dGVyQ2xhc3NGaWVsZCgpIHsKICAgICAgICAgICAgLy8gd2UgY2FuIGFjY2VzcyB0aGUgZmllbGQgZnJvbSB0aGUgc3Vycm91bmRpbmcgdHlwZSdzIGluc3RhbmNlIQogICAgICAgICAgICByZXR1cm4gT3V0ZXJDbGFzcy50aGlzLmZpZWxkOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICBPdXRlckNsYXNzIHBhcmVudCA9IG5ldyBPdXRlckNsYXNzKDQyKTsKCiAgICAgICAgLy8gcHJpbnRzICc0MicKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFyZW50Lm5ldyBJbm5lckNsYXNzKCkuZ2V0T3V0ZXJDbGFzc0ZpZWxkKCkpOwoKICAgICAgICAvLyBjYW5ub3Qgd29yayBhcyBpdCBtYWtlcyBubyBzZW5zZQogICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgSW5uZXJDbGFzcygpLmdldE91dGVyQ2xhc3NGaWVsZCgpKTsKICAgIH0KfQ==