在Java泛型中,<T extends B>
和?
是两种不同的通配符,它们的区别在于它们的使用场景和约束。
<T extends B>
:这是一个泛型类型参数,它表示类型参数T继承自类型B。这种表示法可以用于类、接口和方法。当你想要在泛型类或接口中定义一个类型参数,并且该类型参数必须是类B的子类时,你可以使用<T extends B>
。例如:public class MyClass<T extends Number> {
// ...
}
在这个例子中,MyClass
是一个泛型类,其类型参数T必须是Number
类的子类。
?
:这是一个通配符,表示未知类型。它可以用于泛型类、接口和方法。当你不关心泛型类型参数的具体类型,只需要知道它是某种类型时,可以使用?
。例如:List<?> list;
在这个例子中,list
是一个未知类型的列表。你不知道它的具体类型,但是你知道它是某种类型。
总结:<T extends B>
用于定义泛型类或接口,表示类型参数T必须是类B的子类;而?
用于表示未知类型,可以用于泛型类、接口和方法。
领取专属 10元无门槛券
手把手带您无忧上云