首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在具有接口实现的所有类上执行一个操作

在具有接口实现的所有类上执行一个操作
EN

Stack Overflow用户
提问于 2015-12-11 19:41:09
回答 1查看 1.7K关注 0票数 0

我编写了这段代码,我需要在Class3中创建一个监听器来调用接口"MethodsListener“的所有重写方法,我如何做到这一点?

Class3中,当我调用接口MethodsListener的任何函数时,我需要在实现该接口的所有类中运行该函数,在下一个示例中,当我在Class3中调用函数Method2时,需要在Class1中运行Method2

我编写了这段代码,我需要在Class3中创建一个监听器来调用接口MethodsListener的所有重写方法,如何解决这个问题?

Class3中,当我调用接口MethodsListener的任何函数时,我需要在实现该接口的所有类中运行该函数,在下一个示例中,当我在Class3中调用函数Method2时,需要在Class1中运行Method2

所有类都在分离的线程中运行。

以下是示例代码:

代码语言:javascript
运行
复制
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);
}

在这个示例的输出中,我需要获取:

代码语言:javascript
运行
复制
Executing Method 1
Method 1 executed, message: MSG 1
Executing Method 2
Method 2 executed, message: MSG 2
EN

回答 1

Stack Overflow用户

发布于 2015-12-11 20:06:51

也许你想要这段代码。为了简单起见,我在一个java文件中测试了所有代码。只需在eclipse或其他您正在使用的IDE中创建Class1.java,并通过以下代码即可。这三个类和接口都应该放在同一个Class1.java文件中。尽管您可以为每个文件创建单独的文件。

代码语言:javascript
运行
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34231285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档