Java暑期学习Day37
本帖最后由 马太效应 于 2017-8-12 22:36 编辑今天是第37天,每天都要有一些收获{:10_327:}
static/image/hrline/4.gif
①泛型(Generics)简介
1.是JDK5之后新增的特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。(所有的强制转换都是自动和隐式的)
让人在设计API时可以指定类或方法支持泛型,从而使API的客户端在语法上更简洁。
2.泛型的原理是参数化类型,即把所要操作的数据类型看做是参数。
<同一段代码上操作多种数据类型,顾名思义>
3.泛型提高了代码的扩展性和重用性。
②泛型类
1.泛型的类型参数可以是泛型类
2.泛型类可以同时设置多个类型参数(逗号隔开)
3.泛型类可以继承泛型类
4.泛型类可以实现泛型接口
③定义泛型方法规则
1.所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(如某些例子中的<E>)。
E只是一个类型代号(表示Element),也可以用T、K、V等代号。
2.每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。
一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
3.类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
4.泛型方法体的声明和其他方法一样。
注意类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)。
import java.util.Iterator;
import java.util.LinkedList;
public class LinkedListDemo2 {
public static void main(String[] args) {
MyStack<String> myStack = new MyStack<String>();
myStack.push("zs");
myStack.push("ls");
myStack.push("ww");
myStack.push("zl");
myStack.pop();
myStack.pop();
Iterator<String> it = myStack.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("************************");
MyQueue<Integer> myQueue = new MyQueue<Integer>();
myQueue.push(1);
myQueue.push(2);
myQueue.push(3);
myQueue.push(4);
myQueue.push(5);
myQueue.pop();
myQueue.pop();
Iterator<Integer> it1 = myQueue.iterator();
while (it1.hasNext()) {
System.out.println(it1.next());
}
}
}
class MyStack<T> {
private LinkedList<T> data = null;
public MyStack() {
data = new LinkedList<T>();
}
public void push(T obj) {
data.addFirst(obj);
}
public T pop() {
return data.removeFirst();
}
public Iterator<T> iterator() {
return data.iterator();
}
}
class MyQueue<T> {
private LinkedList<T> data = null;
public MyQueue() {
data = new LinkedList<T>();
}
public Iterator<T> iterator() {
// TODO Auto-generated method stub
return data.iterator();
}
public void push(T obj) {
data.addFirst(obj);
}
public T pop() {
return data.removeLast();
}
}
结果是——
ls
zs
************************
5
4
3
页:
[1]