Java内部类语法/如何使用

时间:2015-09-16 20:38:47

标签: java scope inner-classes

// **已解决** //

我发现(正如2人提到的那样 - 可以访问内部类到外部类的内容。我必须做错其他的事情,因为我无法访问它

// **已解决** //

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

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

在fields区域中,定义了带方法的监听器:

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就像它不在它所在的类的一部分 - 它无法访问类中的变量和方法 - 所以我怎么能使用这个监听器方法,当我能不能访问任何东西/存储班级中的任何数据。

2 个答案:

答案 0 :(得分:0)

我很确定你可以访问外层课程。例如,从onBlablabla()...中调用someMethod()应​​该没问题。

答案 1 :(得分:0)

很难判断你究竟想要做什么,但通常从内部类中,你可以直接使用他们的名字来访问外部类的成员变量和方法(包括私有的),如果你想成为更具体,使用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.
    }
}