通配符类型和类型通配符有什么区别?
在Java中,通配符类型和类型通配符是指不同的概念。
通配符类型是泛型类型的一种,使用?来表示类型参数,可以用在泛型类、泛型方法、泛型接口的声明中,用于表示类型参数的取值范围或限制,例如List<?>表示元素类型未知的列表,List<? extends Number>表示元素类型为Number或其子类的列表。
类型通配符是用于反射API中的一个概念,使用?来表示未知类型,可以用在获取、设置、调用泛型类型的方法或字段时,用于表示泛型类型的参数类型。例如,如果我们有一个泛型类GenericClass<T>,其中包含一个方法void set(T t),我们可以使用类型通配符?来表示未知的类型,并通过反射API来调用这个方法,例如Method setMethod = GenericClass.class.getMethod("set", Object.class),这里的Object.class就是一个类型通配符。
因此,虽然通配符类型和类型通配符都使用?来表示未知类型,但它们的应用场景和含义是不同的。通配符类型主要用于泛型类型的声明中,用于表示类型参数的限制;类型通配符则主要用于反射API中,用于表示泛型类型的参数类型。
网友评论