JAVA-泛型的使用以及泛型限定
2016-10-13 10:26
363 查看
一、泛型的简单使用
1、泛型类的使用:</strong></span></p><pre name="code" class="java"><span style="font-size:18px;">class Demo<T>{public void Show(T t){System.out.println("show:"+t);}public void Print(T t){System.out.println("print:"+t);}}2、泛型方法的使用:
//泛型方法class Demos{public <T> void Show(T t){System.out.println("show:"+t);}public <T> void Print(T t){System.out.println("print:"+t);}}
3、添加数据内容以及编写一个泛型迭代器:
public static void Demo2(){ArrayList<String> list =new ArrayList<String>();list.add("abc");list.add("adc");list.add("acd");biaoli(list);System.out.println("=======================");ArrayList<Integer> list2 = new ArrayList<Integer>();list2.add(3);list2.add(6);list2.add(5);biaoli(list2);}//使用<?>表示通配符,也可以理解是通用符public static void biaoli(ArrayList<?> list){Iterator<?> iterator = list.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}}在main方法中调用以上内容:
public static void main(String[] args) {Demo<String> demo= new Demo<String>();demo.Show("diaobao");System.out.println("---------------");Demos demos = new Demos();demos.Show(1);demos.Show("爱死你了");System.out.println("-----------------");Demo2();}得到下面结果:show:diaobao---------------show:1show:爱死你了-----------------abcadcacd=======================365二、泛型的高级使用:泛型限定/* *泛型的高级使用: * ? 通配符或者说是通用符泛型限定:<? extends E> :可以接送E类型或者E的子类型:上限<? super E> 可以接收E类型或者E的父类型:下限 */例子一:1、定义两个类,一个子类和一个父类并且子类继承父类,实现父类方法
class FanPerson{private String name;FanPerson(String name){this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}}class FamStudent extends FanPerson{FamStudent(String name) {super(name);}}2、在main方法中添加数据以及编写泛型迭代器
public class FanXingDemo {public static void main(String[] args) {ArrayList<FanPerson> al = new ArrayList<FanPerson>();al.add(new FanPerson("ai1"));al.add(new FanPerson("ai2"));al.add(new FanPerson("ai3"));printColl(al);System.out.println("-------");ArrayList<FamStudent> a1 = new ArrayList<FamStudent>();a1.add(new FamStudent("ai---1"));a1.add(new FamStudent("ai---2"));a1.add(new FamStudent("ai---3"));printColl(a1);}//这就是传说中的泛型限定public static void printColl(ArrayList<? extends FanPerson> list){Iterator<? extends FanPerson> iterator = list.iterator();while (iterator.hasNext()) {System.out.println(iterator.next().getName());}}得到以下结果:ai1ai2ai3-------ai---1ai---2ai---3例子二:使用TreeSet添加数据的泛型限定1、同样先编写基本类:
class Fperson{private String name;public Fperson(String name) {this.name=name;}public String getName() {return name;}public void setName(String name) {this.name = name;}}class Fstudent extends Fperson{public Fstudent(String name) {super(name);}}class Fwoker extends Fperson{public Fwoker(String name) {super(name);}}
<strong>2、在main方法中数据的添加以及迭代器、TreeSet中比较器的编写</strong>
public static void main(String[] args) {TreeSet<Fstudent> set= new TreeSet<Fstudent>(new camp());set.add(new Fstudent("abc1"));set.add(new Fstudent("adc2"));set.add(new Fstudent("acc9"));set.add(new Fstudent("abc5"));PrintColl(set);}//迭代器public static void PrintColl(TreeSet<? extends Fperson> p){Iterator<? extends Fperson> iterator = p.iterator();while (iterator.hasNext()) {System.out.println(iterator.next().getName());}}}//TreeSet方法中比较器class camp implements Comparator<Fperson>{public int compare(Fperson arg0, Fperson arg1) {return arg0.getName().compareTo(arg1.getName());}最后输出:abc1abc5acc9adc2
相关文章推荐
- JAVA之旅(二十一)——泛型的概述以及使用,泛型类,泛型方法,静态泛型方法,泛型接口,泛型限定,通配符
- JAVA之旅(二十一)——泛型的概述以及使用,泛型类,泛型方法,静态泛型方法,泛型接口,泛型限定,通配符
- 牛客网Java刷题知识点之泛型概念的提出、什么是泛型、泛型在集合中的应用、泛型类、泛型方法、泛型接口、泛型限定上限、泛型限定下限、 什么时候使用上限?泛型限定通配符的体现
- Java--泛型的原理以及使用场景
- java泛型编程学习 笔记三:泛型继承规则以及通配符“?”使用
- JAVA学习笔记35——泛型1:泛型的简介以及使用
- Java--泛型的原理以及使用场景
- Java基础之泛型限定的使用示例:
- JAVA-泛型的简单使用方法以及高级使用
- Java 泛型使用(续)
- Java 泛型使用(续)
- 浅析Java执行外部命令的几个要点(1)——简单的使用范例以及在Cygwin上的注意点
- java 开发小记:如何使用 MyEclipse 开发自己的类库(mylib.jar)以及引用(使用)她
- 看完think in java第8章后的想法以及对java 1.5以后版本泛型的学习笔记
- C#和Java的泛型、C++模板、C#的constraints特性以及弱类型化和强类型化的问题(转)
- HessianCSharp 1.3.3版本前使用泛型以及接口interface继承问题解决方案!!(实例代码)
- [转贴] Java 理论与实践: 使用通配符简化泛型使用
- Java 理论与实践: 使用通配符简化泛型使用
- Java 5.0 泛型之 使用泛型统一传入的参数类型
- 使用Java程序的泛型应该注意的几个地方