泛型
1、泛型的定义
在集合框架里面大量使用框架。
一个类中的成员变量和成员方法中的使用的类型可能变化,这时候就可以使用泛型,在声明类的时候使用一个特殊的标识表示这些变化的类型。
定义泛型:类名后加"<标识>",例如Node<E>,E标识可能的类型,在类中出现元素类型的地方都使用E表示。
例子:元素类型为任意的节点类
package example5_44;
public class Node<E> {
private E value; // 节点的值,说明这个地方是个变化的类型
private Node<E> next; //表示下一个元素
public E getValue() { //返回值类型也和E相关
return value;
}
public void setValue(E value) {
this.value = value;
}
public Node<E> getNext() {
return next;
}
public void setNext(Node<E> next) {
this.next = next;
}
}
2、泛型的使用
在使用泛型的类定义对象时,需要明确元素的类型,实例化时也要明确元素类型
例如:Node<Integer>n1=new Node<Integer>();
使用泛型:
package example5_45;
import example5_44.Node;
public class NodeTest {
public static void main(String[] args) {
Node<Integer> n1 = new Node<Integer>();
Node<Integer> n2 = new Node<Integer>();
n1.setValue(100);
n2.setValue(200);
n1.setNext(n2);
n2.setNext(null);
Node<Integer> temp = n1.getNext();
System.out.println(temp.getValue());
}
}
3、复杂泛型
对元素类型进行限制
限制元素的类型:
package example5_46;
//在这里继承,说明有一定的限制
public class Node<E extends Number> {
private E value; // 节点的值
private Node<E> next; //表示下一个元素
public E getValue() {
return value;
}
public void setValue(E value) {
this.value = value;
}
public Node<E> getNext() {
return next;
}
public void setNext(Node<E> next) {
this.next = next;
}
public static void main(String args[]){
Node<Integer> n1 = new Node<Integer>();
Node<Integer> n2 = new Node<>();
}
}

浙公网安备 33010602011771号