Java 为什么调用构造函数时不能访问OuterClass.this?

Java 为什么调用构造函数时不能访问OuterClass.this?,java,Java,在为算法编写解释性GUI时,我偶然发现了一些东西 我完全理解为什么以下方法不起作用: public class Superclass { public Superclass (int someValue) { // do something } } // new file private class Subclass extends Superclass { int someValue; public Subclass () {

在为算法编写解释性GUI时,我偶然发现了一些东西

我完全理解为什么以下方法不起作用:

public class Superclass {
    public Superclass (int someValue) {
        // do something
    }
}

// new file

private class Subclass extends Superclass {
    int someValue; 
    public Subclass () {
        super (this.someValue);
        this.someValue = 0;
    }
}
public class Superclass {

    public Superclass (int someValue) {
        // do something
    }

}

// new file

public class OuterClass {

    private class InnerSubclass extends Superclass {
        int someValue;
        public InnerSubclass () {
            super (this.someValue);
            this.someValue = 0;
        }

    }
    // some code of OuterClass
}
public class Superclass {

    public Superclass (int someValue) {
        // do something
    }

}

// new file

public class OuterClass {

    int someValue;

    private class InnerSubclass extends Superclass {
        public InnerSubclass () {
            super (OuterClass.this.someValue);
        }
    }

    public OuterClass () {
        this.someValue = 0;
    }
    // some code of OuterClass
}
子类尚未完全初始化,因此使用
this
没有任何意义

我也理解为什么这不起作用:

public class Superclass {
    public Superclass (int someValue) {
        // do something
    }
}

// new file

private class Subclass extends Superclass {
    int someValue; 
    public Subclass () {
        super (this.someValue);
        this.someValue = 0;
    }
}
public class Superclass {

    public Superclass (int someValue) {
        // do something
    }

}

// new file

public class OuterClass {

    private class InnerSubclass extends Superclass {
        int someValue;
        public InnerSubclass () {
            super (this.someValue);
            this.someValue = 0;
        }

    }
    // some code of OuterClass
}
public class Superclass {

    public Superclass (int someValue) {
        // do something
    }

}

// new file

public class OuterClass {

    int someValue;

    private class InnerSubclass extends Superclass {
        public InnerSubclass () {
            super (OuterClass.this.someValue);
        }
    }

    public OuterClass () {
        this.someValue = 0;
    }
    // some code of OuterClass
}
这种情况不会因为子类是内部类这一事实而改变

我不明白的是为什么这不起作用:

public class Superclass {
    public Superclass (int someValue) {
        // do something
    }
}

// new file

private class Subclass extends Superclass {
    int someValue; 
    public Subclass () {
        super (this.someValue);
        this.someValue = 0;
    }
}
public class Superclass {

    public Superclass (int someValue) {
        // do something
    }

}

// new file

public class OuterClass {

    private class InnerSubclass extends Superclass {
        int someValue;
        public InnerSubclass () {
            super (this.someValue);
            this.someValue = 0;
        }

    }
    // some code of OuterClass
}
public class Superclass {

    public Superclass (int someValue) {
        // do something
    }

}

// new file

public class OuterClass {

    int someValue;

    private class InnerSubclass extends Superclass {
        public InnerSubclass () {
            super (OuterClass.this.someValue);
        }
    }

    public OuterClass () {
        this.someValue = 0;
    }
    // some code of OuterClass
}
请注意,我使用的是
OuterClass.this
,而不是
InnerSubclass的
this
。外部类对象需要初始化,以便内部类对象甚至可以创建。我能想到的唯一不正确的情况是,如果内部类是静态的,在这种情况下,
OuterClass。这根本不能被引用


你知道为什么上面的代码仍然会产生一个
VerifyError

什么Java编译器吗?你能发布构造函数的精确反编译签名吗?你如何创建内部类的实例?你从哪里得到错误/堆栈跟踪消息?这对我来说没有任何问题
OuterClass.InnerSubclass InnerSubclass=OuterClass.new InnerSubclass()什么Java编译器?你能发布构造函数的精确反编译签名吗?你如何创建内部类的实例?你从哪里得到错误/堆栈跟踪消息?这对我来说没有任何问题
OuterClass.InnerSubclass InnerSubclass=OuterClass.new InnerSubclass()