gpt4 book ai didi

java - 方法参数扩展类实现接口(interface)

转载 作者:IT老高 更新时间:2023-10-28 13:54:04 25 4
gpt4 key购买 nike

我有以下类和接口(interface):

public class BasicObject{...}
public interface CodeObject{...}

我想创建一个方法,其中参数需要是 BasicObject 类型并实现 CodeObject。我尝试了以下代码,但不能保证 clazz 是实现 CodeObject 的类。

myMethod(Class<? extends BasicObject> clazz){...}

我想做这样的事情,但它不编译:

myMethod(Class<? extends BasicObject implements CodeObject> clazz){...}

最佳答案

您的模式类必须扩展 BasicObject并扩展/实现CodeObject (实际上是一个接口(interface))。您可以使用方法签名的通配符定义中声明的多个类来执行此操作,如下所示:

public <T extends BasicObject & CodeObject> void myMethod(Class<T> clazz)

请注意,如果您使用以下任何一种方式,它都不会起作用:

  • public <T extends BasicObject, CodeObject> void myMethod(Class<T> clazz)

    这在技术上是有效的语法,但是 CodeObject未使用;该方法将接受任何扩展 BasicObject 的类,无论他们是否扩展/实现 CodeObject .

  • public void myMethod(Class<? extends BasicObject & CodeObject> clazz)
    public void myMethod(Class<? extends BasicObject, CodeObject> clazz)

    根据 Java,这些只是错误的语法。

关于java - 方法参数扩展类实现接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10641584/

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