gpt4 book ai didi

java - 将泛型类传递给 java 函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:09:10 24 4
gpt4 key购买 nike

将类传递给 java 函数时是否可以使用泛型?

我希望做这样的事情:

public static class DoStuff
{
public <T extends Class<List>> void doStuffToList(T className)
{
System.out.println(className);
}

public void test()
{
doStuffToList(List.class); // compiles
doStuffToList(ArrayList.class); // compiler error (undesired behaviour)
doStuffToList(Integer.class); // compiler error (desired behaviour)
}
}

理想情况下,List.class 和 ArrayList.class 行可以正常工作,但 Integer.class 行会导致编译错误。我可以使用 Class作为我的类型而不是 T extends Class<List>但是我不会捕获上面的 Integer.class 案例。

最佳答案

public <T extends List> void doStuffToList(Class<T> clazz)

您正在传递 Class毕竟 - 参数的类型应该是 Class它的类型参数应该受到限制。

实际上,<T extends Class<..>表示 T == Class ,因为 Classfinal .然后将类的类型参数固定为 List - 没有任何List , 只是 List .因此,如果您希望您的示例有效,您需要:

public <T extends Class<? extends List>> void doStuffToList(T clazz)

但这根本不需要。

关于java - 将泛型类传递给 java 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2854813/

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