一个内层class,一个外层接口,如何获取访问权限?
An inner class, an outer interface, how to get an access?
我有一个带有内部 class 的接口。现在的问题是,为什么我不能像访问外部 classes 中的方法那样访问外部接口中定义的函数?
我认为事情应该顺利进行,因为这个内部 class 只会在 class 之后实例化,实现外部接口,被实例化。
无论如何,我得到的错误是 "No enclosing instance of the type OterInterface is accessible in scope"
public interface OterInterface {
public void someFunction1() ;
public void someFunction2() ;
public class Innerclass{
public String value1;
public String value2;
public String getValue1() {
OterInterface.this.someFunction1();
return value1;
}
}
}
在这种情况下你可以使用匿名内部class。由于您无法实例化任何接口,因此无法访问它们的方法。接口不完整 classes 具有未实现的方法。为了实例化它,您必须为其方法提供实现。
public interface OterInterface {
public void someFunction1() ;
public void someFunction2() ;
public class Innerclass{
public String value1;
public String value2;
public String getValue1() {
new OterInterface(){
public void someFunction1() {
System.out.println("someFunction1()");
}
public void someFunction2() {
System.out.println("someFunction2()");
}
}.someFunction1();
return value1;
}
}
}
考虑您尝试在哪个 OterInterface 实例上执行 'someFunction'。 'this' 指的是 current object - OterInterface 是一个接口,因此没有当前对象。
所以你不能从那里引用 OterInterface.this,因为编译器不知道你指的是哪个对象实例!
我有一个带有内部 class 的接口。现在的问题是,为什么我不能像访问外部 classes 中的方法那样访问外部接口中定义的函数? 我认为事情应该顺利进行,因为这个内部 class 只会在 class 之后实例化,实现外部接口,被实例化。 无论如何,我得到的错误是 "No enclosing instance of the type OterInterface is accessible in scope"
public interface OterInterface {
public void someFunction1() ;
public void someFunction2() ;
public class Innerclass{
public String value1;
public String value2;
public String getValue1() {
OterInterface.this.someFunction1();
return value1;
}
}
}
在这种情况下你可以使用匿名内部class。由于您无法实例化任何接口,因此无法访问它们的方法。接口不完整 classes 具有未实现的方法。为了实例化它,您必须为其方法提供实现。
public interface OterInterface {
public void someFunction1() ;
public void someFunction2() ;
public class Innerclass{
public String value1;
public String value2;
public String getValue1() {
new OterInterface(){
public void someFunction1() {
System.out.println("someFunction1()");
}
public void someFunction2() {
System.out.println("someFunction2()");
}
}.someFunction1();
return value1;
}
}
}
考虑您尝试在哪个 OterInterface 实例上执行 'someFunction'。 'this' 指的是 current object - OterInterface 是一个接口,因此没有当前对象。
所以你不能从那里引用 OterInterface.this,因为编译器不知道你指的是哪个对象实例!