我编写了这段代码,我需要在Class3
中创建一个监听器来调用接口"MethodsListener“的所有重写方法,我如何做到这一点?
在Class3
中,当我调用接口MethodsListener
的任何函数时,我需要在实现该接口的所有类中运行该函数,在下一个示例中,当我在Class3
中调用函数Method2
时,需要在Class1
中运行Method2
。
我编写了这段代码,我需要在Class3
中创建一个监听器来调用接口MethodsListener
的所有重写方法,如何解决这个问题?
在Class3
中,当我调用接口MethodsListener
的任何函数时,我需要在实现该接口的所有类中运行该函数,在下一个示例中,当我在Class3
中调用函数Method2
时,需要在Class1
中运行Method2
。
所有类都在分离的线程中运行。
以下是示例代码:
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
发布于 2015-12-11 20:06:51
也许你想要这段代码。为了简单起见,我在一个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);
}
https://stackoverflow.com/questions/34231285
复制相似问题