Java 当名称相同时,从内部类匿名构造函数访问父方法参数

Java 当名称相同时,从内部类匿名构造函数访问父方法参数,java,Java,我有一个方法,在这个方法中,我通过匿名内部类创建另一个对象的实例,并在它的匿名构造函数中进行初始化,在构造函数中,如果我想访问父对象,如果它是一个类,我可以通过类名来访问它。这等等,但是在这种情况下,我如何访问父实例,它是一个有名称的方法? 这里是我面临的问题的一个例子,我必须重命名方法或字段,以防父类和innerclass具有相同的名称 public static void test(final String param1){ new InnerClass(){ {

我有一个方法,在这个方法中,我通过匿名内部类创建另一个对象的实例,并在它的匿名构造函数中进行初始化,在构造函数中,如果我想访问父对象,如果它是一个类,我可以通过类名来访问它。这等等,但是在这种情况下,我如何访问父实例,它是一个有名称的方法? 这里是我面临的问题的一个例子,我必须重命名方法或字段,以防父类和innerclass具有相同的名称

public static void test(final String param1){
    new InnerClass(){
        {
            this.param1=param1;
        }
    }.doSomething();;
}

public static class InnerClass {
    String param1;
    void doSomething(){
        System.out.println("param1 "+param1);
    }
}

只需将参数传递给InnerClass构造函数,而不是使用匿名子类:

public static void test(final String param1){
    new InnerClass(param1).doSomething();
}

public static class InnerClass {
    String param1;

    public InnerClass(String param1) {
        this.param1 = param1;
    }

    void doSomething(){
        System.out.println("param1 "+param1);
    }
}

这太可怕了。太可怕了。即使你能解决这个问题,你为什么要这么做?为什么不把param1带进ctor呢?否则重命名方法参数。但是在匿名类上使用实例初始化器来破解内部状态是很讨厌的。有没有办法访问父类,在这种情况下,哪个是方法?没有,它不能访问调用方法中的局部变量。只需将所需的值作为构造函数参数传入即可。