我编写了这段代码,我需要在Class3
中创建一个监听器来调用接口“MethodsListener”的所有覆盖方法,我该如何实现呢?
当在Class3
中调用接口MethodsListener
的任何函数时,我需要在实现此接口的所有类中运行此函数,在下一个示例中,当我调用函数Method2
时在Class3
我需要在Method2
中运行Class1
。
我编写了这段代码,我需要在Class3
中创建一个监听器来调用接口MethodsListener
的所有覆盖方法,我该如何解决?
当在Class3
i中调用接口MethodsListener
的任何函数时,我需要在实现此接口的所有类中运行此函数,在下一个示例中,当我调用函数{{1 Method2
中的Class3
我需要在Method2
中运行Class1
。
所有类都以独立的线程运行。
这是示例代码:
public class Class1 implements MethodsListener {
public static void main(String[] argv) {
new Thread(new Class2()).start();
}
@Override
public void method1(String message) {
System.out.println("Method 1 executed, message: " + message);
}
@Override
public void method2(String message) {
System.out.println("Method 2 executed, message: " + message);
}
}
public class Class2 implements Runnable {
@Override
public void run() {
new Thread(new Class3()).start();
}
/*...*/
}
public class Class3 implements Runnable, MethodsListener {
@Override
public void run() {
method1("MSG 1");
method2("MSG 2");
}
@Override
public void method1(String message) {
System.out.println("Executing Method 1");
}
@Override
public void method2(String message) {
System.out.println("Executing Method 2");
}
}
interface MethodsListener {
public abstract void method1(String message);
public abstract void method2(String message);
}
在这个例子的输出中,我需要得到:
Executing Method 1
Method 1 executed, message: MSG 1
Executing Method 2
Method 2 executed, message: MSG 2
答案 0 :(得分:1)
可能你可能想要这个代码。为简单起见,我在一个java文件中测试了所有代码。只需在eclipse或您使用的任何IDE中创建Class1.java并通过以下代码。所有三个类和接口都应该在同一个Class1.java文件中。虽然您可以为每个文件创建单独的文件。
class Class1 {
public static void main(String[] argv) {
new Thread(new Class3()).start();
}
}
class Class2 implements MethodsListener {
@Override
public void method1(String message) {
System.out.println("Method 1 executed, message: " + message);
}
@Override
public void method2(String message) {
System.out.println("Method 2 executed, message: " + message);
}
}
class Class3 extends Class2 implements Runnable {
@Override
public void run() {
method1("MSG 1");
method2("MSG 2");
}
@Override
public void method1(String message) {
System.out.println("Executing Method 1");
super.method1(message);
}
@Override
public void method2(String message) {
System.out.println("Executing Method 2");
super.method2(message);
}
}
interface MethodsListener {
public abstract void method1(String message);
public abstract void method2(String message);
}