泛型的本质是参数化类型,也就是说,泛型就是将所操作的数据类型作为参数的一种语法。那要在呢么写java泛型方法?今天我们就给大家讲解一下java泛型方法的相关内容。
1、方法中的泛型
public staticT backSerializable(Classclazz, String path, String fileName) { FileInputStream fis = null; ObjectInputStream ois = null; Object obj = null; try { fis = new FileInputStream(path + fileName); ois = new ObjectInputStream(fis); obj = ois.readObject(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if (fis != null) fis.close(); if (ois != null) ois.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return (T) obj; }
2、定义泛型类
public class PageHibernateCallbackimplements HibernateCallback < list > { private String hql; private Object[] params; private int startIndex; private int pageSize; public PageHibernateCallback(String hql, Object[] params , int startIndex, int pageSize) { super(); this.hql = hql; this.params = params; this.startIndex = startIndex; this.pageSize = pageSize; } public ListdoInHibernate(Session session) throws HibernateException , SQLException { //1 执行hql语句 Query query = session.createQuery(hql); //2 实际参数 if (params != null) { for (int i = 0; i < params.length; i++) { query.setParameter(i, params[i]); } } //3 分页 query.setFirstResult(startIndex); query.setMaxResults(pageSize); return query.list(); } }
为什么用java泛型?
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工具网。
推荐阅读: