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.
}
}
//** 已解决 **//
我发现(正如 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.
}
}