Java语言中引入泛型是一个较大的功能增强。不仅语言、类型系统和编译器有了较大的变化,以支持泛型,而且类库也进行了很大的改动,许多重要的类,比如集合框架,都已经成为泛型化的了。与此同时,提高了代码的运行效率,加强了程序的性能。可以说Java泛型的存在给Java编程带来了巨大的变化。那么,到底应该怎样使用Java泛型呢?下面我们就来看看泛型类、泛型接口、泛型方法的使用。
Java泛型本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
泛型类在java中有着很重要的地位,其中我们用的最多的就是ArrayList,HashMap,HashSet.
既然是带你看懂Java泛型,肯定不能源码里面的那些容器类呀,那些容器类都已经很完善了如果要带你们看的话,肯定会越看越晕的,所以我们自己定义一个泛型类出来。
//这个T可以换成随便一个字母 ,只不过我写泛型都用的T,你可以换成A,B,C...
public class Test<T> {
T name;
public Test(T name){
this.name = name;
}
public T getName() {
return name;
}
public void setName(T name) {
this.name = name;
}
//如果不传泛型类型的话,那么默认的就是Object型什么都可以传
Test test = new Test("hello");
//传入的数据类型不为基本类型,否则编译期会报错,开头我解释过为什么会报错了
Test<Integer> test1 = new Test<>(418);
泛型接口的定义和泛型类的定义差不多,我们常见的泛型接口就是,List,Map,Set.
首先老规矩我们自己定义一个泛型接口。
public interface Test<T>{
T getName(T name);
}
//如果实现接口的时候不传入数据类型的话,需要将泛型声明也要写到类中要不然会报错
class Test1<T> implements Test<T>{
@Override
public T getName(T name) {
return null;
}
}
//实现接口的时候传入数据类型的话,就不用把泛型声明也写到类中了
class Test2 implements Test<String>{
@Override
public String getName(String name) {
return name;
}
}
泛型方法的使用
public <T> void getName(T name){}
public <T,K> void getNameAndValue(T name, K value){}
public <T,K,V> void getNameAndValueAndV(T name, K value, V v){}//总的来说就是参数需要多少
俗话说,授人以鱼,不如授人以渔,我们只要能够掌握上述的动力节点在线为大家总结的Java泛型的使用方法,就能够在Java泛型的难题中披荆斩棘,所向无前!
提枪策马乘胜追击04-21 20:01
代码小兵87207-15 12:10
杨晶珍05-11 14:54
杨晶珍05-12 17:30