"¿Por qué estás haciendo esto que es malo contigo?" no obstante, ¿hay alguna manera de lograr esto sin cambiar el nombre del parámetro del método final?¿Pueden los parámetros finales ser calificados de alguna manera para resolver conflictos de nombres con miembros de clase anónimos?
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();
}
};
}
Obviamente, sin la llamada doSomethingThatReassignsBar, usted no necesitaría la barra de miembro y así sucesivamente. En este caso, la solución simple es cambiar final Bar bar
a algo así como final Bar startBar
y luego la asignación está bien. Pero, por curiosidad, ¿es posible referirse específicamente al final Bar
(similar a la forma en que diría Super.this
)?
"¿Por qué estás haciendo esto lo que está mal contigo?" :) – jpm
En realidad no es tan reprensible como te puedas imaginar. Creé un creador de documentos y estaba usando el patrón de visitante para escribir elementos, y en el caso de una hoja de cálculo simplemente estaba iterando sobre las células comenzando en "startCell" (el param final del método) y moviéndolos a través de 'cell = cell.nextCell() ', donde cell era la celda actual de ItemVisitor para escribir. –