1.1什么是泛型
1. 泛型就是限制我们得数据类型。
2.为什么使用泛型?
我们原来在定义集合时,是如下得定义方式,列:
List list=new ArrayList();//该集合没有使用泛型
list.add("java1");
list.add("java2");
String str= (String) list.get(0);//获取元素 需要进行强制类型转换
System.out.println(str);
获取元素时,不方便对元素进行相应得其他操作。
1.2如何使用泛型
List<类型> list=new ArrayList<类型>(); 只能在该集合中存储指定得类型。
public static void main(String[] args) {
//限制元素类型
List<String> list = new ArrayList<>();
//集合中只能添加String类型
list.add("java1");
list.add("hello");
list.add("world");
//获取元素时 默认就是相应得数据类型 而无需在进行转换
String s1 = list.get(0);
//<K,V>:K:表示键得泛型 V:表示值得泛型
HashMap<String,Integer> map = new HashMap();
map.put("name",15);
map.put("age",15);
Set<String> keys = map.keySet();
}
1.3 我们能否自己定义泛型类
可以
如下:
public class 类名<标识,标识....> {
标识 变量名;
public 标识 方法名(){
}
public void 方法名(标识 参数名){
}
.........
}
定义坐标类:
public static void main(String[] args) {
//在创建泛型类对象是没有指定泛型类型则默认Object类型
Point p1 = new Point();
p1.setX(15);
p1.setX("北纬50°");
//这里的泛型类型必须是对象类型
Point<Integer> p2 = new Point();
p2.setX(20);
p2.setY(50);
Integer x= p2.getX();
Integer y= p2.getY();
p2.show();
Point<String> p3 = new Point<>("150","250");
}
}
class Point<T>{
private T x;
private T y;
public Point(){
}
public Point(T x, T y) {
this.x = x;
this.y = y;
}
public void show(){
System.out.println("x坐标为:"+x+";y坐标为:"+y);
}
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public T getY() {
return y;
}
public void setY(T y) {
this.y = y;
}
}