gpt4 book ai didi

java - 如何调用接口(interface)的子类

转载 作者:行者123 更新时间:2023-11-30 07:51:21 25 4
gpt4 key购买 nike

这是一个困扰我一段时间的问题。

在像 Jersey 这样的框架中,我们有接口(interface),我们可以将其子类化以向我们的程序添加一些功能。例如,要在 RESt 应用程序中添加请求过滤,我们可以实现 ContainerRequestFilter 然后瞧,我们获得了身份验证。

我的问题是框架/库如何知道我们有它的接口(interface)之一的子类?

根据我的理解,你不能实例化接口(interface),只能实例化它的子类,例如:

public interface Greeter{
void sayHi();
}

public class SpanishGreeter implements Greeter{
@override
void sayHi(){
System.out.println("Hola");
}
}

public class Controller{
public void main(String[] args){
//We must know the name of subclass to instantiate?
Greeter spanishG = new SpanishGreeter();
}
}

最佳答案

您正在寻找的是类路径扫描

这不是一项微不足道的任务,正如其名称所说:您基本上需要扫描类路径并加载您找到的每个类(尽管典型的实现将允许您将搜索限制在某些包及其仅子包,以阻止事情变得非常疯狂)。

Java 语言中没有特殊的技巧可以使这项任务变得简单。

好消息是你不需要从头开始编写它,因为像 Spring 这样的框架已经内置了它,或者如果你想拥有完整的底层控制,你可以使用像 Reflections 这样的专用库。

关于java - 如何调用接口(interface)的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47261769/

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