黑马程序员技术交流社区

标题: Java基础学习日记 - 泛型 [打印本页]

作者: qihuan    时间: 2015-7-11 23:20
标题: Java基础学习日记 - 泛型
  1. package practice;

  2. import java.util.*;

  3. /**
  4. * 泛型:JDK1.5版本后出现的新特性,用于解决安全问题。是一个安全机制。
  5. * 优点:
  6. *         1.将运行时期出现的问题ClassCastEception,转移到了编译时期。
  7. *                 方便于程序员解决问题。
  8. *         2.避免了强制转换的麻烦。
  9. * 格式:通过<>来定义要操作的引用数据类型。
  10. * 使用:只要见到<>就要定义泛型。
  11. *                 <>就是用来接收类型的。
  12. *                 当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。
  13. *
  14. * 泛型类:什么时候定义?当类中要操作的引用数据类型不确定的时候。
  15. *                 泛型类定义的泛型,在整个类中有效,如果被方法使用,泛型类的对象明确要操作的类型后,所有要操作的泛型就已经固定了。
  16. *                 为了让不同的方法操作不同的类型,而且定义类型还不确定。       
  17. *                 那么就将泛型定义在方法上。
  18. *
  19. * Tips:静态方法不可以访问类上定义的泛型。
  20. *                 如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
  21. *
  22. * 泛型定义在接口上。
  23. *
  24. * 泛型应用:?通配符,也叫做占位符。
  25. *                 泛型的限定:
  26. *                 ? extends E:可以接收E类型或者E的子类型。上限。
  27. *                 ? super E:可以接收E类型或者E的父类型。下限。
  28. *
  29. * @author Qihuan
  30. *
  31. */

  32. //定义一个泛型类
  33. class Tools<F> {
  34.         private F f;
  35.         public void setObject(F f){
  36.                 this.f = f;
  37.         }
  38.         public F getObject(){
  39.                 return f;
  40.         }
  41.        
  42.         public <Q> void show(Q q){
  43.                 System.out.println("show "+q);
  44.         }
  45. }

  46. class LengthComparator implements Comparator<String>{
  47.         public int compare(String s1,String s2){
  48.                 int num = new Integer(s2.length()).compareTo(new Integer(s1.length()));
  49.                 if(num == 0)
  50.                         return s2.compareTo(s1);
  51.                 return num;
  52.         }
  53. }

  54. public class GenericPractice {

  55.         public static void main(String[] args) {
  56.                 ArrayList<Object> al = new ArrayList<Object>();
  57.                
  58.                 al.add("sad");
  59.                 al.add("sdsad");
  60.                 al.add("sadfdfd");
  61.                 al.add("svccxd");
  62.                 al.add(4);
  63.                
  64.                 MyIterator(al);
  65.         }
  66.        
  67.         public static void MyIterator(ArrayList<?> al) {
  68.                 // TODO Auto-generated constructor stub
  69.                 for(Iterator<?> it = al.iterator();it.hasNext();){
  70.                         System.out.println(it.next());
  71.                 }
  72.         }
  73. }
复制代码







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2