在不同的 class 中实现 class 的方法
Implement method for class in a different class
有一个 class A 有一个名为 OnEvent 的未定义方法。我希望此方法由实例化 class 对象的 class 定义。
像这样:
public class A{
int someVar=1;
float anotherVar=2;
public void method1(){
...
if( event )
OnEvent();
...
}
//OnEvent is not defined!!
OnEvent();
}
另一个 class,在不同的包中:
public class B{
A objA = new A();
public void method1(){
//I need to do something like
objA.setOnEvent( this.OnEvent() );
}
OnEvent(){
//Do something
}
}
我查了一下,接口 and/or lambda 表达式是实现它的方法,但我一直无法成功完成。您能否就如何操作提供一些指导?
一种方法(使用界面):
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;
}
}
您可以制作 A
class 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
}
};
...
}
这不是直接可能的。但是你可以委托方法:
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() {
}
}
有一个 class A 有一个名为 OnEvent 的未定义方法。我希望此方法由实例化 class 对象的 class 定义。
像这样:
public class A{
int someVar=1;
float anotherVar=2;
public void method1(){
...
if( event )
OnEvent();
...
}
//OnEvent is not defined!!
OnEvent();
}
另一个 class,在不同的包中:
public class B{
A objA = new A();
public void method1(){
//I need to do something like
objA.setOnEvent( this.OnEvent() );
}
OnEvent(){
//Do something
}
}
我查了一下,接口 and/or lambda 表达式是实现它的方法,但我一直无法成功完成。您能否就如何操作提供一些指导?
一种方法(使用界面):
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;
}
}
您可以制作 A
class 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
}
};
...
}
这不是直接可能的。但是你可以委托方法:
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() {
}
}