java泛型方法怎么写?为什么用java泛型?

泛型的本质是参数化类型,也就是说,泛型就是将所操作的数据类型作为参数的一种语法。那要在呢么写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工具网。

推荐阅读:

java线程面试题有哪些?实用面试题分享

java怎么写窗口程序?java写窗口程序方法

json为什么要解析?json解析原理及实例介绍