类的泛型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class Point<T, A> {  //泛型,使用时定义类型
private T x;
private A y;
public T getX() {
return this.x;
}
public void setX(T x) {
return this.x = x;
}
public A getY() {
return this.x;
}
public void setY(A x) {
return this.x = x;
}

// 通配符可以规定范围,上限 extends 和下限 super
public static void print(Point<?,?> a) { //通配符,表示接收任意泛型的Point类型,但是内部只能取值,不能进行赋值操作
//a.setX("345"); //赋值会报错,不知道x是什么类型
System.out.println(a.getX());
}

// 主方法
public static void main(String args[]) {
Point x = new Point(); //不使用泛型,默认是Object类型
Point <String, Integer> p = new Point<String, Integer> ();
p.setX("123");
p.setY(123);
print(p);
}
}

接口的泛型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
interface Message<T> {
public void print(T t);
}
class M<T> implements Message<T> { // 实现接口的类继续使用泛型
public void print(T t) {
System.out.println(t);
}
}
class S implements Message<String> { // 实现接口的类指明泛型
public void print(String t) {
System.out.println(t);
}
}
public class Point<T, A> { //泛型,使用时定义类型
// 主方法
public static void main(String args[]) {
M <String> m = new M<String> ();
m.print("123");
}
}

泛型方法(太恶心,不看了)