鱼C论坛

 找回密码
 立即注册
查看: 2785|回复: 0

[学习笔记] Java暑期学习Day37

[复制链接]
发表于 2017-8-12 22:36:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 马太效应 于 2017-8-12 22:36 编辑

今天是第37天,每天都要有一些收获


                               
登录/注册后可看大图



①泛型(Generics)简介
  1.是JDK5之后新增的特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。(所有的强制转换都是自动隐式
  让人在设计API时可以指定类或方法支持泛型,从而使API的客户端在语法上更简洁。


  2.泛型的原理是参数化类型,即把所要操作的数据类型看做是参数。
    <同一段代码上操作多种数据类型,顾名思义>
  3.泛型提高了代码的扩展性重用性


②泛型类
  1.泛型的类型参数可以是泛型类
  2.泛型类可以同时设置多个类型参数逗号隔开
  3.泛型类可以继承泛型类
  4.泛型类可以实现泛型接口


③定义泛型方法规则
  1.所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(如某些例子中的<E>)。
   E只是一个类型代号(表示Element),也可以用T、K、V等代号。


  2.每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。
    一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。


  3.类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符
4.泛型方法体的声明和其他方法一样。
  注意类型参数只能代表引用型类型不能是原始类型(像int,double,char的等)。
  
  1. import java.util.Iterator;
  2. import java.util.LinkedList;

  3. public class LinkedListDemo2 {
  4.         public static void main(String[] args) {
  5.                 MyStack<String> myStack = new MyStack<String>();
  6.                 myStack.push("zs");
  7.                 myStack.push("ls");
  8.                 myStack.push("ww");
  9.                 myStack.push("zl");
  10.                 myStack.pop();
  11.                 myStack.pop();
  12.                 Iterator<String> it = myStack.iterator();
  13.                 while (it.hasNext()) {
  14.                         System.out.println(it.next());
  15.                 }
  16.                 System.out.println("************************");
  17.                 MyQueue<Integer> myQueue = new MyQueue<Integer>();
  18.                 myQueue.push(1);
  19.                 myQueue.push(2);
  20.                 myQueue.push(3);
  21.                 myQueue.push(4);
  22.                 myQueue.push(5);
  23.                 myQueue.pop();
  24.                 myQueue.pop();
  25.                 Iterator<Integer> it1 = myQueue.iterator();
  26.                 while (it1.hasNext()) {
  27.                         System.out.println(it1.next());
  28.                 }

  29.         }

  30. }

  31. class MyStack<T> {
  32.         private LinkedList<T> data = null;

  33.         public MyStack() {
  34.                 data = new LinkedList<T>();
  35.         }

  36.         public void push(T obj) {
  37.                 data.addFirst(obj);
  38.         }

  39.         public T pop() {
  40.                 return data.removeFirst();

  41.         }

  42.         public Iterator<T> iterator() {
  43.                 return data.iterator();

  44.         }

  45. }

  46. class MyQueue<T> {
  47.         private LinkedList<T> data = null;

  48.         public MyQueue() {
  49.                 data = new LinkedList<T>();
  50.         }

  51.         public Iterator<T> iterator() {
  52.                 // TODO Auto-generated method stub
  53.                 return data.iterator();
  54.         }

  55.         public void push(T obj) {
  56.                 data.addFirst(obj);

  57.         }

  58.         public T pop() {
  59.                 return data.removeLast();
  60.         }

  61. }
复制代码
结果是——


ls
zs
************************
5
4
3







评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 04:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表