是否可以通过某种方式限定最终参数以解决与匿名类成员的命名冲突?

Dou*_*rop 9 java scope anonymous-class

"你为什么要这样做呢?" 尽管如此,有没有办法在不更改最终方法参数名称的情况下完成此操作?

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();
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

显然没有doSomethingThatReassignsBar调用,你就不需要成员Bar等等.在这种情况下,简单的修复是改变final Bar bar为类似的东西final Bar startBar然后分配是好的.但出于好奇,是否可以专门提及final Bar(类似于你想说的方式Super.this)?

Ale*_*lex 7

我认为你的问题的答案是"不".从Java语言规范:

局部变量(第14.4节),形式参数(第8.4.1节),异常参数(第14.20节)和本地类(第14.3节)只能使用简单名称(第6.2节)引用,而不是限定名称( 6.6节).

换句话说,SomeUnknownScopeQualifier在示例代码中没有什么可以替换的,以使内部类中的赋值语句引用形式参数名称.