"Dlaczego robisz to, co jest z tobą nie tak?" niezależnie od tego, czy jest jakiś sposób na osiągnięcie tego bez zmiany nazwy ostatniego parametru metody?Czy parametry końcowe mogą być w pewien sposób kwalifikowane do rozwiązywania konfliktów nazw z anonimowymi członkami klasy?
private Foo createAnonymousFoo(final Bar bar) {
return new Foo() {
private Bar bar = SomeUnknownScopeQualifier.bar;
public Bar getBar() {
return bar;
}
public void doSomethingThatReassignsBar() {
bar = bar.createSomeDerivedInstanceOfBar();
}
};
}
Oczywiście bez wezwania doSomethingThatReassignsBar, byś nie potrzebował Bar członkiem i tak dalej. W takim przypadku prostą poprawką jest zmiana final Bar bar
na coś podobnego do final Bar startBar
, a następnie przypisanie jest w porządku. Ale z ciekawości można jednoznacznie odnieść się do final Bar
(podobnie jak w przypadku Super.this
)?
"Dlaczego robisz to, co jest z tobą nie tak?" :) – jpm
To nie jest tak naganne, jak można sobie wyobrazić. Stworzyłem program do tworzenia dokumentów i używałem wzorca gości do pisania przedmiotów, a w przypadku arkusza kalkulacyjnego po prostu przeglądałem komórki zaczynając od "startCell" (ostatniego parametru metody) i przechodząc przez nie za pomocą 'cell = cell.nextCell() ', gdzie komórka była komórką, do której należy funkcja ItemVisitor. –