有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java尽可能使用bean配置从不同的类向主类添加函数

我正在用Java编写一个red5应用程序。这只是意味着我有一个bean,它指向我的主类app类,名为Application

我有几个类,我想添加和删除像模块到我的应用程序

例如:

我有两个名为“A”和“B”的类,每个类都包含公共函数testme()。 我希望以某种方式配置我的主应用程序类将调用这两个类的构造函数,并且我的主应用程序类将以某种方式包含函数Atestme()和Btestme(),它们将调用相应类中相应的testme()函数。有没有一种方法可以实现这样的目标,而不用我手动创建这些函数并在其中一个类中调用相应的函数

有没有一种方法可以使用bean配置来实现这样的目标?)我想 能够使用bean配置配置添加和删除“模块”(如果可能)

我开始阅读有关反射的文章,它说这会增加性能开销,我应该避免在对时间和cpu敏感的生产环境中使用


共 (2) 个答案

  1. # 1 楼答案

    在Java中,您有方法,而不是函数

    编写一个可测试的接口

    public interface Testable {
        public void testme();
    }
    

    A类和B类必须实现可测试接口

    然后在类应用程序中,您有一个方法

    private static doTest(Testable t) {
        t.testme();
    }
    

    然后是main()方法

    public static void main(String[] args) {
        doTest(new A());
        doTest(new B());
    }
    
  2. # 2 楼答案

    is there a way to catch when aDoTest() or bDoTest() is called in my main class and to catch it in order to call the appropriate functions ?

    这个怎么样:

    public class Application {
        public static void aDoTest() {
            doTest(new A());
        }
    
        public static void bDoTest() {
            doTest(new B());
        }
    
        private static doTest(Testable t) {
            t.testMe();
        }
    
        public static void main(String[] args) {
            aDoTest();
            bDoTest();
        }
    }
    
    public interface Testable {
        public void testMe();
    }
    
    public class A implements Testable {
        public void testMe() {
            // ...
        }
    }
    

    如果这没有帮助,你需要澄清你的问题


    也许您希望捕获对不存在的(即未声明或未实现的)方法的调用,并将它们转换为对真实方法的调用。如果是这样,你可以放弃这个想法。Java不会让你这么做

    最接近的方法是在运行时生成一个新类,其中包含以下方法的实现:

    • 您可以动态生成源代码,编译并加载它
    • 您可以使用BCEL之类的工具来创建“.class”文件并加载它们
    • 使用^{}类创建某个接口的动态代理实现

    但这些方法都是复杂和昂贵的。(可能比使用反射要昂贵得多,除非生成成本可以在大量调用中摊销。)