Java 内部 class 语法/如何使用

Java inner class syntax / how to use

//** 已解决 **//

我发现(正如 2 人提到的那样 - 可以从内部 classes 访问内容到外部 classes。我一定是做错了什么,因为我不能访问它

//** 已解决 **//

我正在使用 Phillips Hue API (http://www.developers.meethue.com/documentation/java-sdk-getting-started) 它带有一些听众,但我不认为我以前在 java 中见过这样的结构......

我不想回答如何使用这个 API - 只是一般来说,听众的这种语法是如何工作的。

在字段区域,定义了方法的监听器:

public class someClass {
    private int someVariable;
    private PHSDKListener listener = new PHSDKListener() {
        @Override
        public void onBlablabla(Object something) {
            // how do i do stuff to an someClass object from here??
        }
    };
    public someClass() {
        // constructor
    }
    private void someMehtod() {
        // a standard method that i am used to.
    }
}

我的问题:这个侦听器方法 onBlablabla 好像不是它所在的 class 的一部分 - 它无法访问 class 中的变量和方法 - 那怎么办当我无法访问 anything/store class.

中的任何数据时,我使用此侦听器方法

我很确定你可以访问外部 class。例如,从 onBlablabla() 调用 someMethod() 应该没有问题...

很难判断你到底想做什么,但通常从内部 class 内部,你可以直接访问外部 class 的成员变量和方法(包括私有的)使用他们的名字,或者,如果你想更具体,使用 parentClass.this 符号,所以在你的情况下:

Public class someClass {
    private int someVariable;
    private PHSDKListener listener = new PHSDKListener() {
        @Override
        public void onBlablabla(Object something) {
            int localVar1 = someVariable; //this will work
            int localVar2 = someClass.this.someVariable; //this will also work
        }
    };
    public someClass() {
        // constructor
    }
    private void someMehtod() {
        // a standard method that i am used to.
    }
}