java泛型

java泛型

泛型

泛型的本质就是”参数化类型”,就是将原来具体的类型参数化,然后在使用时传入具体的类型。

定义语法

[访问权限] class 类名称<泛型类型1,泛型类型2,…泛型类型3>{

​ [访问权限] 泛型类型标识 变量名称 ;

​ [访问权限] 泛型类型标识 方法名称(){} ;

​ [访问权限] 返回值类型声明 方法名称(泛型类型标识 变量名称){} ;

}

案例

给坐标点使用泛型
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
32
33
34
35
package com.lvjie.entity;

public class Point<T> {

private T pointX;
private T pointY;

public Point() {}

public Point(T pointX, T pointY) {
this.pointX = pointX;
this.pointY = pointY;
}

public void setPointX(T pointX) {
this.pointX = pointX;
}

public T getPointX() {
return pointX;
}

public void setPointY(T pointY) {
this.pointY = pointY;
}

public T getPointY() {
return pointY;
}

@Override
public String toString() {
return "X坐标为:" + this.pointX + ",Y坐标为:" + this.pointY;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Test {

public static void main(String[] args) {

Point<Integer> point1 = new Point<Integer>(23, 34);
System.out.println(point1);

Point<Float> point2 = new Point<Float>(23.3f, 34.6f);
System.out.println(point2);

Point<String> point3 = new Point<String>("北纬30度", "东经120度");
System.out.println(point3);
}
}

X坐标为:23,Y坐标为:34

X坐标为:23.3,Y坐标为:34.6

X坐标为:北纬30度,Y坐标为:东经120度

List、List<?>和List

List指定集合元素只能是T类型

List<?> 指定集合元素可以是任意类型

List指定集合元素只能是Object类型。

  • Object和T:Object是一个实打实的类,没有泛指谁,是一个确定的类型;T可以泛指Object

  • ?和T:?是一个不确定类,?和T都表示不确定的类型 ,但如果是T的话,函数里面可以对T进行操作,比方 T car = getCar(),而不能用? car = getCar()。

java泛型

作者

lvjie

发布于

2022-06-18

许可协议


:D 一言句子获取中...