gpt4 book ai didi

java - 在 java 反射创建的对象上强制执行 java 接口(interface)

转载 作者:搜寻专家 更新时间:2023-11-01 02:26:52 24 4
gpt4 key购买 nike

  • 我从配置文件中读取了一个完整的类名
    • 例如:org.a.b.c.DefaultHandler
  • 这个类实现了一个名为“handler”的方法
  • 我使用 java 反射来调用“处理程序”

    Class cls = Class.forName("org.a.b.c.DefaultHandler");
    handlerObj = cls.newInstance();
    method = cls.getMethod("handler", cArg);
    method.invoke(handlerObj, service);

类看起来像:

public class DefaultHandler {

public void handler(String service) throws Exception {
...
}

}

我需要确保所有 *Handler Class 都实现了 "handler" 方法。如果我做类似的事情

public class DefaultHandler implements handlerInterface {
...
}

它没有多大用处,因为编译器不会帮助我使用反射。

那么如何在由 java 反射调用/创建的类的实例上强制执行接口(interface)????

最佳答案

您不能在编译时做任何事情来强制它是一个handlerInterface,因为反射本质上是一个运行时 Activity 。

你能做的最好的事情就是将它转换为你的接口(interface)handlerInterface。如果不是,则会抛出 ClassCastException,您可以适本地处理它。

try {
handlerInterface handler = (handlerInterface) handlerObj;
} catch (ClassCastException e) {
// Handle appropriately
}

关于java - 在 java 反射创建的对象上强制执行 java 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20507916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com