gpt4 book ai didi

Java:参数化数据类型和非具体类型

转载 作者:太空宇宙 更新时间:2023-11-04 13:46:32 25 4
gpt4 key购买 nike

就泛型而言,参数化类型可以指定抽象类或接口(interface)等非具体类型吗?例如,是否可以编写类似...的东西

ArrayList< SomeInterfaceType > list = new ArrayList< SomeInterfaceType >();

...使用通配符或有界通配符时可以说同样的话吗?例如,如果我做了类似的事情怎么办?

ArrayList< ? >

..或者类似...

public static void foo( ArrayList< ? extends SomeInterfaceType > ) { ... }

...这些通配符能够同时接受具体类型和非具体类型吗?如果是的话,我认为在最后一个示例中,也可以让通配符采用抽象类或接口(interface),并且仍然从 SomeInterfaceType 进行“扩展”。

最佳答案

是的,您可以使用非具体类型(例如接口(interface)类型)作为参数化类型的类型参数。

一个简单的例子是 RunnableList(Runnable 是一个接口(interface)):

class MyTask implements Runnable { ... }

List<Runnable> tasks = new ArrayList<>();
tasks.add(new MyTask());

// Run all the tasks in the list
for (Runnable task : tasks) {
task.run();
}

同样,它也适用于通配符。

关于Java:参数化数据类型和非具体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30776590/

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