泛型类与接口、泛型方法

来源:互联网 发布:西北工业大学网络教育 编辑:程序博客网 时间:2024/06/02 04:34
  1. //泛型类
  2. package cn.huhui.demo02;
  3.  
  4. /*
  5. *
  6. * 2017.9.13
  7. * 栈举列说明自定义泛型
  8. * 泛型类的定义及使用
  9. * 类名后加入:<E>即可
  10. *
  11. * */
  12. publicclassGenericStack<E>{
  13. private java.util.ArrayList<E> list =new java.util.ArrayList<E>();
  14.  
  15. // 返回栈的长度
  16. publicint getSize(){
  17. return list.size();
  18. }
  19.  
  20. // 返回栈顶元素
  21. public E peek(){
  22. return list.get(list.size()-1);
  23. }
  24.  
  25. // 入栈
  26. publicvoid push(E o){
  27. list.add(o);
  28. }
  29.  
  30. // 出栈
  31. public E pop(){
  32. E o = list.get(list.size()-1);
  33. list.remove(o);
  34. return o;// 注意这里是O
  35. }
  36.  
  37. // 判断栈是否为空
  38. publicboolean isEmpty(){
  39. return list.isEmpty();
  40. }
  41. }
  42. //测试
  43.  
  44. package cn.huhui.demo02;
  45. /*
  46. * 2017.9.13
  47. * 测试自定义的泛型类 栈的使用
  48. * 使用与ArrayList()<>相同
  49. *
  50. */
  51. publicclassGenericStackTest{
  52. publicstaticvoid main(String[] args){
  53. // TODO Auto-generated method stub
  54. // 存储字符串的栈
  55. GenericStack<String> stack=newGenericStack<String>();
  56. stack.push("bird");
  57. stack.push("apple");
  58. stack.push("pen");
  59. stack.push("good");
  60. System.out.println(stack.isEmpty());
  61. System.out.println(stack.getSize());
  62. // 存储整数的栈
  63. GenericStack<Integer> stack2=newGenericStack<Integer>();
  64. stack2.push(10);
  65. stack2.push(9);
  66. stack2.push(5);
  67. System.out.println(stack2.isEmpty());
  68. System.out.println(stack2.getSize());
  69. }
  70.  
  71. }
  72.  
  73. //泛型方法 非受限
  74.  
  75. package cn.huhui.demo03;
  76. /*
  77. * 2017.9.13
  78. * 泛型方法的定义及使用
  79. * 定义过程:将泛型<E>置于方法头中关键字之后
  80. * 使用过程:类名.<T>函数名();
  81. * */
  82.  
  83. publicclassDemo{
  84. publicstaticvoid main(String[] args){
  85. Integer[] integers={1,2,3,4};
  86. String[] strings={"hello","java","great"};
  87. Demo.<Integer>print(integers);
  88. Demo.<String>print(strings);
  89. }
  90. publicstatic<E>void print(E[] list){
  91. for(int i=0; i< list.length;i++){
  92. System.out.print(list[i]+" ");
  93. }
  94. System.out.println();
  95. }
  96. }
  97.  
  98. //受限泛型
  99. package cn.huhui.demo04;
  100.  
  101. /*
  102. * 2017.9.13
  103. * 受限泛类型
  104. * 非受限泛类型<E>相当于<E extends object>
  105. *
  106. * */
  107. publicclassDemo{
  108.  
  109. publicstaticvoid main(String[] args){
  110. // TODO Auto-generated method stub
  111.  
  112. Rectangle ret=newRectangle(2,2);
  113. Circle cir=newCircle(2);
  114. System.out.println("Same areas?"+equals(object1,Object2));
  115. }
  116. publicstatic<EextendsGeometricObject>boolean equals(E object1,EObject2){
  117. return object1.getAreas()==object2.getAreas();
  118. }
  119.  
  120. }
原创粉丝点击