有一个类A,它有一个名为OnEvent的未定义方法。我希望这个方法由实例化类A Object的类定义。
像这样:
public class A{
int someVar=1;
float anotherVar=2;
public void method1(){
...
if( event )
OnEvent();
...
}
//OnEvent is not defined!!
OnEvent();
}
另一个课程,在另一个课程中:
public class B{
A objA = new A();
public void method1(){
//I need to do something like
objA.setOnEvent( this.OnEvent() );
}
OnEvent(){
//Do something
}
}
我已经看过了,接口和/或lambda表达式是实现它的方法,但我无法成功完成。你能否提供一些关于如何做的指示?
答案 0 :(得分:4)
您可以制作A
课程abstract
(以及OnClick()
方法abstract
)。
然后,您可以创建A
的匿名实例,直接为OnClick()
提供实现。
例如:
public abstract class A{
...
public abstract void OnEvent();
}
public class B{
A objA = new A() {
public void OnClick() {
//OnClick implementation
}
};
...
}
答案 1 :(得分:2)
这不是直接可能的。但是你可以委托方法:
public interface OnEvent {
public void onEvent();
}
public class A {
OnEvent delegate;
public void onEvent() {
delegate.onEvent();
}
public void setOnEvent(OnEvent delegate) {
this.delegate = delegate;
}
}
public class B implements OnEvent {
public void onEvent() {
}
}
答案 2 :(得分:1)
一种方法(使用界面):
public interface OnEventInterface {
public void OnEvent ();
}
public class B implements OnEventInterface {
A objA = new A();
public void method1(){
//I need to do something like
objA.setOnEvent( this );
}
OnEvent(){
//Do something
}
}
然后在A:
public class A{
int someVar=1;
float anotherVar=2;
private onEventInterface;
public void method1(){
...
if( event )
onEventInterface.OnEvent();
...
}
public void setOnEvent (OnEventInterface handler) {
onEventInterface = handler;
}
}