gpt4 book ai didi

java - 如何使用一个接口(interface)作为另一个接口(interface)函数的参数?

转载 作者:行者123 更新时间:2023-12-01 07:52:27 25 4
gpt4 key购买 nike

假设我有这两个接口(interface)...

public interface ObjectInterface { /* empty interface */ }

public interface ObjectHandler
{
void handle(ObjectInterface object);
}

...还有一个实现 ObjectInterface 的具体类:

public class ConcreteObject implements ObjectInterface { /* ... */ }

为什么 Java 不允许这样做?

public class ConcreteHandler implements ObjectHandler
{
@Override
public void handle(ConcreteObject object) // <-- ObjectInterface implementation
{
// ...
}
}

ConcreteObject 毕竟实现了 ObjectInterface 接口(interface)。
但是,有没有办法在 Java 中设计我的类并保持这种抽象模式?

最佳答案

您可以使用接受的 ObjectInterface 类参数化 ObjectHandler:

public interface ObjectHandler<T extends ObjectInterface> 
{
void handle(T object);
}

并按如下方式使用它:

public class ConcreteHandler implements ObjectHandler<ConcreteObject>
{
@Override
public void handle(ConcreteObject object) // <-- now this works
{
// ...
}
}

关于java - 如何使用一个接口(interface)作为另一个接口(interface)函数的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35013235/

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