`

泛型—设定通配符的下线—super的使用

 
阅读更多
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;



/**
 * 设定通配符的下线
 * <? super Type>表示  ?是与Type类型相同或者Type是?父类都是合法的。
 * 不知道为什么2种测试结果都是一样的。
 * */
public class Super {
	
	//此种方式 ?只能是T的子类
	public static <T> T  copy(java.util.Collection<T> dest ,java.util.Collection<? extends T> src)
	{
		T last = null;
		for(T ele:src)
		{
			dest.add(ele);
			last = ele;
	
		}
		return last;
	}
	
	//使用 super 方式 '?'可以是与T相同,或者是T的父类。
	public static <T> T copy2(Collection<? super T> dest,Collection<T> src)
	{
		T last = null;
		for (T o : src) {
			dest.add(o);
			last = o;
		}
		return last;
	}
	
	public static void main(String[] args) {
		//第一张方式;
		List<Number> ln = new ArrayList<Number>();
		List<Integer> li = new ArrayList<Integer>();
		li.add(3);
		Number last = copy(ln, li);
		System.out.println(last.getClass());////class java.lang.Integer
		
		//第二张方式;
		List<Number> ln2 = new ArrayList<Number>();
		List<Integer> li2 = new ArrayList<Integer>();
		li2.add(3);
		Number last2 = copy2(ln2, li2);
		System.out.println(last2.getClass());//class java.lang.Integer
											 
		
	}
}

 

分享到:
评论

相关推荐

    泛型讲解 类型通配符

    "泛型讲解 类型通配符" 泛型是Java语言中的一种机制,它允许在定义类、接口时指定类型形参,这个类型形参将在声明变量、创建对象时确定。泛型的引入解决了Java集合的缺陷,即集合会“忘记”对象的类型,导致...

    泛型&通配符常见面试题总结

    如何使用泛型和通配符来实现? 5. 为什么不能在泛型方法中使用instanceof关键字?(因为泛型类型信息在运行时被擦除) 了解并熟练运用泛型和通配符是Java开发人员必备的技能,它们能够帮助写出更安全、可维护的...

    java泛型常用通配符实例解析

    java泛型常用通配符实例解析 ...本文详细介绍了Java泛型常用通配符实例解析,包括限定通配符和无限定通配符的使用方法,以及`&lt;? super E&gt;`的用法。希望本文能够对大家的学习和工作产生一定的参考价值。

    Java泛型通配符

    Java泛型通配符是Java编程语言中一个重要的特性,它允许我们在定义泛型类型时使用问号(?)作为占位符,表示任意类型的参数。这种通配符的使用大大提高了代码的灵活性和可复用性,同时也帮助开发者遵循强类型检查的...

    Java中泛型通配符的使用方法示例

    Java 中泛型通配符的使用方法示例主要介绍了 Java 中泛型通配符的使用方法,结合实例形式分析了 Java 中泛型通配符的功能、语法及在泛型类创建泛型对象中的使用方法。以下是 Java 中泛型通配符的使用方法示例的知识...

    泛型的通配符.java

    允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码复用提高软件开发工作效率的一种...

    Java 泛型通配符的一个实例

    * 一个参数通配符的实例 * 说明:对一个包含了数值元素的集合进行汇总运算。在这种情况下,用户并不关心 * 集合中的每一个对象是什么类型,只要它是数值型即可,而且,用户也希望集合中可以 * 存放不同类型的数值...

    泛型中extends和super的区别Java系列2021.pdf

    在Java中,extends和super是两个重要的泛型通配符,它们用于限制类型参数的范围。了解它们的区别非常重要,否则可能会导致编程错误。 extends关键字 在泛型中,extends关键字用于限制类型参数的上界。例如,List...

    Java 泛型 super T 中 super 怎么 理解?与 extends 有何不同? - 副本.md

    Java 泛型 super T 中 super 怎么 理解?与 extends 有何不同? - 副本

    1.泛型类 、通配符的使用、通配符的上限和下限 编写泛型类Stack<E>,该类中定义一个成员变量和如下方法:

    ### 泛型类、通配符的使用及上下限详解 #### 1. 泛型类的概念 在Java中,泛型是一种使代码更加灵活、重用性更强且类型安全的技术。通过使用泛型,我们可以定义类型参数化的类或方法,从而避免了代码重复并且可以在...

    Java泛型三篇文章,让你彻底理解泛型(super ,extend等区别)

    Java 泛型详解 Java 泛型是 Java SE 5.0 中引入的一项特征,它允许程序员在编译时检查类型安全,从而减少了 runtime 错误...通过了解 Java 泛型的基本概念和关键字,我们可以更好地使用泛型来提高代码的质量和可读性。

    使用通配符简化泛型使用1

    通配符分为两种主要类型:无界通配符()和有界通配符(如 &lt;? extends T&gt; 和 &lt;? super T&gt;)。 3. 无界通配符(): 无界通配符表示没有任何特定类型的约束,意味着它可以代表任何类型。例如,`List&lt;?&gt;`表示一个可以...

    java基础-泛型通配符

    java基础-泛型通配符

    java中的泛型通配符的使用

    这是小编自己学习的心得,想通过这个平台对大家共享,希望大家前来评价一下,我及时改正,通配符这个是在泛型中使用的一个可以帮助大家更加方便简洁的去利用代码,它是其他泛型的一个总父类!

    Java 泛型总结(三):通配符的使用

    下边界限定通配符使用 &lt;? super Fruit&gt; 形式,表示该泛型容器只能包含 Fruit 或者其父类型。 在使用通配符时,我们需要注意一些限制。例如,我们不能将对象添加到使用通配符的泛型容器中,因为我们不知道实际类型是...

    Generic_3(泛型限定(下限)-泛型限定(上限的体现)-泛型限定(下限的体现)-泛型限定(通配符的体现)-集合查阅的技巧)

    泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...

    泛型实例详解

    通配符允许我们在不关心具体类型的情况下使用泛型。例如,我们可以定义一个接受任何类型List的方法: ```java public void printList(List&lt;?&gt; list) { // 只能调用无参数的方法,不能添加或修改元素 for ...

    一看就懂 详解JAVA泛型通配符T,E,K,V区别

    在Java中,我们经常会看到一些通配符,例如T、E、K、V等,这些通配符都是Java泛型的通配符,它们的区别在于它们的名称和使用场景。 * T (type):表示不确定的Java类型,通常用作泛型类型参数。 * E (element):代表...

    Java泛型extends及super区别实例解析

    Java泛型中的通配符(Wildcards)和边界(Bounds)是两个重要的概念,分别由 &lt;? extends T&gt; 和 &lt;? super T&gt; представляют。这些概念的出现是为了解决泛型中的一些问题。 &lt;? extends T&gt;:是指“上界...

    详谈Java泛型中T和问号(通配符)的区别

    如果需要指定泛型类型参数,可以使用T,如果需要表示未知类型的泛型参数,可以使用问号(通配符)。 此外,Java泛型还有其他重要的概念,如有界类型、通配符类型等。有界类型是指使用extends语句来限制泛型类型参数的...

Global site tag (gtag.js) - Google Analytics