泛型基础
Java中,什么是泛型?泛型是一种把类型明确的工作推迟到创建对象或调用方法的方式,这种方式又称为参数化类型,即把类型当做参数传递。
1、泛型类
泛型类:即把泛型定义在类上。格式为:
public class 类名<泛型类型1,···>
看一下以下例子:
以下是普通类:
package com.project08.FanXing;
public class Goods {
public void show(String name) {
System.out.println(name);
}
public void show(int price) {
System.out.println(price);
}
}
这里Goods类里定义了两个设置商品价格和名字的重载方法
接下来是测试类:
package com.project08.FanXing;
public class GoodsTest {
public static void main(String[] args) {
Goods goods = new Goods();
goods.show("芬达");
goods.show(3);
}
}
输出如下:
可以看到,代码似乎有很多类似或重复的地方,那当我们处理比这个更复杂的情况时又该怎么做呢?此时就轮到泛型类就登场了。
在Goods类中应用泛型类后如下:
以下是泛型类:
package com.project08.FanXing;
public class Goods<T> {
public void show(T t) {
System.out.println(t);
}
}
测试类不变:
package com.project08.FanXing;
public class GoodsTest {
public static void main(String[] args) {
Goods goods = new Goods();
goods.show("芬达");
goods.show(3);
}
}
输出结果如下:
可以看到,泛型类依旧能够输出我们想要的结果,同时也减少了我们写那些过多过于重复的代码。
2、泛型方法
泛型方法就是把泛型定义在方法上
格式为:
public <泛型类型> 返回类型 方法名 (泛型类型)
Goods类中应用泛型方法如下:
package com.project08.FanXing;
public class Goods {
public <T> void show(T t) {
System.out.println(t);
}
}
测试类:
package com.project08.FanXing;
public class GoodsTest {
public static void main(String[] args) {
Goods goods = new Goods();
goods.show("芬达");
goods.show(3);
goods.show("true");
}
}
运行结果如下:
3、泛型接口
泛型接口就是把泛型定义在接口上
格式:
public interface 接口名 <泛型类型1,···>
在Goods中应用泛型接口后如下:
package com.project08.FanXing;
public interface Goods<T> {
public abstract void show(T t);
}
Fanta类实现Goods接口:
package com.project08.FanXing;
public class Fanta<T> implements Goods<T> {
@Override
public void show(T t) {
System.out.println(t);
}
}
接下类是测试类:
package com.project08.FanXing;
public class GoodsTest {
public static void main(String[] args) {
Goods<String> fanta01 = new Fanta<String>();
fanta01.show("芬达");
Goods<Integer> fanta02 = new Fanta<Integer>();
fanta02.show(3);
}
}
输出:
以上只是简单例子,让大家对泛型有一个大致的了解,简单理解就是指某一种数据类型,在实际的应用中,可以传入任何的数据类型。
但要注意:泛型必须是引用类型。
泛型的应用有很多,在之后的学习生涯,我们在ArrayList集合、LinkedList集合,HashMap集合,Set集合等集合都能看到泛型的应用