gpt4 book ai didi

java - 上限泛型 VS 父类(super class)作为方法参数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:22:56 27 4
gpt4 key购买 nike

据我所知,使用上限泛型和使用父类(super class)作为方法参数都接受相同的可能参数。哪个是首选,两者之间有什么区别(如果有)?

上限泛型作为参数:

public <T extends Foo> void doSomething(T foo) {}

父类(super class)作为参数:

public void doSomething(Foo foo) {}

最佳答案

这是一个上限类型参数。使用 super 创建下限,你不能真正为类型参数做。 You can't have a lower bounded type parameter .

这会有所不同,例如,如果您想要传递 List<T> .因此,对于以下两种方法:

public <T extends Foo> void doSomething(List<T> foos) {}
public void doSomething(List<Foo> foo) {}

对于给定的类:

class Bar extends Foo { }

下面的方法调用:

List<Bar> list = new ArrayList<Bar>();
doSomething(list);

对第一种方法有效,但对第二种方法无效。第二种方法失败,因为 List<Foo>不是 List<Bar> 的父类(super class)型, 尽管 FooBar 的 super 类型.但是,第一种方法通过了,因为有类型参数 T将被推断为 Bar .

关于java - 上限泛型 VS 父类(super class)作为方法参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21390685/

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