gpt4 book ai didi

java - Java 类构造函数中尖括号的用途是什么?

转载 作者:行者123 更新时间:2023-12-02 07:11:53 24 4
gpt4 key购买 nike

我想要方法public void x(List<Class<some expression>> m)如果您尝试传递不扩展 class A{} 的类,则会抛出错误将“某些表达式”替换为...某些表达式。

当我使用通配符或不包含通配符时,我总是会收到恼人的警告,因此我想了解为什么 Class 值得拥有一个维度,即使我对它的使用方式完全不了解。

最佳答案

我不太明白你想做什么。实际上,这个方法签名:

public void x(List<? extends YourClass> m)

如果您传递一个List对象,其类不扩展YourClass(我们这样调用它,而不是A),则不会编译)。

如果您希望 x 方法获取 Class 对象列表作为参数,那是另一个问题。您确定不愿意只传递扩展 YourClass 的类的对象 List 吗?如果是这样,该方法签名应该可以工作。

编辑:既然您声明要传递类列表,那么这应该可行:

public void x(List<Class<? extends YourClass>> m)

这样测试:

import java.util.*;

class YourClass {}
class YourClassEx extends YourClass {}

public class Test {

public static void x(List<Class<? extends YourClass>> m) {
// stuff...
}

public static void main(String[] argv) {

List<Class<? extends YourClass>> list = new ArrayList<>();
list.add(YourClass.class);
list.add(YourClassEx.class);
x(list); // compiles fine until here

list.add(String.class); // doesn't compile
x(new ArrayList<Class>()); // doesn't compile, either

}
}

关于java - Java 类构造函数中尖括号的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15393176/

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