• 技术文章 >Java >java教程

    Java中泛型限定的代码分享

    黄舟黄舟2017-10-18 10:13:37原创772
    这篇文章主要介绍了Java编程泛型限定的相关内容,具有一定参考价值,需要的朋友可以了解下。

    泛型 一般 出现在集合中,迭代器中 也会出现!

    泛型 是为了 提高代码的 安全性。 泛型 确保数据类型的唯一性。

    在我们常用的容器中, 越是单一越好处理啊!

    泛型的限定:

    ? 是通配符 指代 任意类型

    泛型的限定上限:

    <? extends E> 接受 E 或者 E 的子类型。

    泛型的限定下限:

    <? super E> 接收 E 或者 E 的父类。

    泛型的限定上限 (定义父类 填装子类 类型!)

    下面我们看看具体代码示例


    package newFeatures8;
    import java.util.*;
    /*
    ? 通配符。也可以理解为占位符。
    泛型的限定;
    ? extends E: 可以接收E类型或者E的子类型。上限。
    ? super E: 可以接收E类型或者E的父类型。下限
    */
    class GenericDemo6 {
    	public static void main(String[] args) {
    		/*
    		 * ArrayList<String> al = new ArrayList<String>();
    		 * 
    		 * al.add("abc1"); al.add("abc2"); al.add("abc3");
    		 * 
    		 * ArrayList<Integer> al1 = new ArrayList<Integer>(); al1.add(4);
    		 * al1.add(7); al1.add(1);
    		 * 
    		 * printColl(al); printColl(al1);
    		 */
    		//ArrayList<Person> al = new ArrayList<Student>();error
    		//为了解决等号两边泛型不一致的情况,jdk1.7以后可以这么写
    		ArrayList<Person> al = new ArrayList<>();//右边的泛型自动反射进来
    		al.add(new Person("abc1"));
    		al.add(new Person("abc2"));
    		al.add(new Person("abc3"));
    		// printColl(al);
    		ArrayList<Student> al1 = new ArrayList<Student>();
    		al1.add(new Student("abc--1"));
    		al1.add(new Student("abc--2"));
    		al1.add(new Student("abc--3"));
    		printColl(al1); 
    	}
    	public static void printColl(Collection<? extends Person> al) {
    		Iterator<? extends Person> it = al.iterator();
    		while (it.hasNext()) {
    			System.out.println(it.next().getName());
    		}
    	}
    	/*public static void printColl(ArrayList<?> al)
    	{
    		Iterator<?> it = al.iterator();
    		while (it.hasNext()) {
    			System.out.println(it.next().toString());
    		}
    	}*/
    }
    class Person {
    	private String name;
    	Person(String name) {
    		this.name = name;
    	}
    	public String getName() {
    		return name;
    	}
    }
    class Student extends Person {
    	Student(String name) {
    		super(name);
    	}
    }
    /*
     class Student implements Comparable<Person> { 
    	 public int compareTo(Person s){ 
    	 	this.getName() 
    	 }
     }
     */
    /*
     class Comp implements Comparator<Person>{ //<? super E> 
    	 public int compare(Person s1,Person s2) {
    	 //Person s1 = new Student("abc1");
    	 return s1.getName().compareTo(s2.getName()); 
    	 }
     }
     TreeSet<Student> ts = new TreeSet<Student>(new Comp());//TreeSet(Comparator<? super E> comparator) 
     ts.add(new Student("abc1"));
     ts.add(new Student("abc2"));
     ts.add(new Student("abc3"));
     */

    总结

    以上就是Java中泛型限定的代码分享的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Java 分享 定的
    上一篇:Java逆波兰表达式实现的示例 下一篇:Java实现开发基础日期类的示例详解
    千万级数据并发解决方案

    相关文章推荐

    • 一文搞懂Java接口• 一起来理解Java中的泛型• 整理分享Java语言表达式的五个谜题• 详细整理java枚举的使用总结• java反射机制详细解析(总结分享)
    1/1

    PHP中文网