Въпросът не е в паралелността.
Чета B. Java Concurrency на Goetz на практика и сега съм на section 3.2
относно публикуването на обекти. Той каза
Последният механизъм, чрез който може да бъде публикуван обект или неговото вътрешно състояние, е да се публикува инстанция на вътрешен клас, както е показано в ThisEscape в листинг 3.7.
public class ThisEscape {
public ThisEscape(EventSource source) {
source.registerListener(
new EventListener() {
public void onEvent(Event e) {
doSomething(e);
}
});
}
}
}
Така че се опитах да напиша свой собствен вреден пример за такава публикация. Ето го:
public class InnerPublication {
public static void main(final String[] args){
Subscriber s = new Subscriber();
s.subscribe(new ToPublish(){ });
}
public abstract static class ToPublish{ }
public static class Subscriber{
public void subscribe(ToPublish tp){
//How can I use the published enclosing instance to do some harm?
}
}
}
Тъй като анонимният клас е винаги (дори в статичен контекст) вътрешен клас, имаме публикация тук. Но не виждам как мога да използвам публикацията, за да навредя на приложената инстанция.
ToPublish
подклас от членския класSubscriber
(освен ако не използвате отражение). Трябва да направите това от самия анонимен клас. - person Erwin Bolwidt   schedule 25.12.2015