Raf*_*l T 9 java implementation interface inner-classes
我刚刚遇到一种行为,我首先认为它是Eclipse中的一个错误.考虑这个简单的类:
public class Foo {
public static interface Callback {
public void onAction();
}
}
Run Code Online (Sandbox Code Playgroud)
这完全有效.但是,这不是:
public class Foo implements Callback {
public static interface Callback {
public void onAction();
}
public void onAction() { /*some implementation*/ }
}
Run Code Online (Sandbox Code Playgroud)
但这也是有效的:
public class Foo {
public static interface Callback {
public void onAction();
}
private final Callback mCallback = new Callback() {
public void onAction() { /*some implementation*/ }
};
}
Run Code Online (Sandbox Code Playgroud)
为什么Java迫使我"浪费"一个成员,如果它可以通过让我自己实现它来简单地保存它?我非常清楚将此接口放在自己的文件中的"解决方法",但出于好奇:有没有理由说这不起作用?
使用此代码
public class Foo implements Callback{
public static interface Callback{
public void onAction()
}
public void onAction(){//some implementation}
}
Run Code Online (Sandbox Code Playgroud)
是什么Callback?编译器(btw不同于Eclipse)不知道是什么Callback.
您Callback在使用后定义了界面.