泛型是把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型,在工作中使用泛型也是常有的事,那java泛型方法怎么用?下面来我们就来给大家讲解一下。
泛型方法可以定义在普通类和泛型类中,比如泛型类更为常用,一般能用泛型方法解决的问题优先使用泛型方法而不使用泛型类,类型变量放在修饰符的后面,如public static ,public final等的后面。
public class Teacher { public staticT println(T t) { System.out.println(t); return t; } }
调用很简单,很一般方法调用是一样的,更方便的是类型不像一般方法做了限定。
String s = Teancher.println("str");
另外需要说明的是,定义在泛型类中的泛型方法的泛型变量之间是没有关系的,如这样的代码
public class Teacher { T teacher; public Teacher(T t) { this.teacher = t; } publicT println(T t) { System.out.println(t); return t; } }
Teacher
Integer in = teacher.println(123456);
类泛型类型为String,方法的泛型类型为Integer,虽然都是用T来表示的。
同时关于泛型方法需要说明的是:
在修饰符public xx与方法名之间非常重要,有< T >这样的才算是泛型方法;仅仅使用了泛型变量并不算是泛型方法。
用泛型有什么意义?
1.使用泛型能写出更加灵活通用的代码
泛型的设计主要参照了C++的模板,旨在能让人写出更加通用化,更加灵活的代码。模板/泛型代码,就好像做雕塑时的模板,有了模板,需要生产的时候就只管向里面注入具体的材料就行,不同的材料可以产生不同的效果,这便是泛型最初的设计宗旨。
2.泛型将代码安全性检查提前到编译期
泛型被加入Java语法中,还有一个最大的原因:解决容器的类型安全,使用泛型后,能让编译器在编译的时候借助传入的类型参数检查对容器的插入,获取操作是否合法,从而将运行时ClassCastException转移到编译时比如:
List dogs =new ArrayList(); dogs.add(new Cat());
在没有泛型之前,这种代码除非运行,否则你永远找不到它的错误。但是加入泛型后
Listdogs=new ArrayList<>(); dogs.add(new Cat());//Error Compile
会在编译的时候就检查出来。
3.泛型能够省去类型强制转换
在JDK1.5之前,Java容器都是通过将类型向上转型为Object类型来实现的,因此在从容器中取出来的时候需要手动的强制转换。
Dog dog=(Dog)dogs.get(1);
加入泛型后,由于编译器知道了具体的类型,因此编译期会自动进行强制转换,使得代码更加优雅。
Java泛型虽然有这么多好处,但是在使用泛型时,泛型类型必须为引用数据类型,不能为基本数据类型,最后大家如果想要了解更多java常见问题知识,敬请关注奇Q工具网。
推荐阅读: