关于定义泛型接口的使用

定义了一个DAO<T>接口

package com.wengde.bookshop1.dao;

import java.util.List;

public interface DAO<T> {
  //插入数据,同时获取插入的ID
  long insert(String sql,Object...args);
  //执行update操作,包括insert delete update
   void update(String sqj,Object...args);
  //返回一个对象
   T query(String sql,Object...agrs);
   //执行多条查询记录,返回一个list
   List<T> queryForlist(String sql,Object...args);
   //查询统计信息
    <V> V getSingleval(String sql,Object ... args); 
   //批量处理
   void batch(String sql,Object[]...args);
}

再定义一个实现类(这个类实现DAO类的时候,没有带泛型,其方法就全部是Object类)

package com.wengde.bookshop1.impl;

import java.util.List;

import com.wengde.bookshop1.dao.DAO;

public class DAOIpml  implements DAO {

    @Override
    public long insert(String sql, Object... args) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void update(String sqj, Object... args) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public Object query(String sql, Object... agrs) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public List queryForlist(String sql, Object... args) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Object getSingleval(String sql, Object... args) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void batch(String sql, Object[]... args) {
        // TODO Auto-generated method stub
        
    }

}

定义一个DAOImpl(该类实现的DAO<T>带了泛型,则其对应的方法涉及到泛型的就是指定泛型T类型)

package com.wengde.bookshop1.impl;

import java.util.List;

import com.wengde.bookshop1.dao.DAO;

public class DAOIpml  implements DAO<T> {

    @Override
    public long insert(String sql, Object... args) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void update(String sqj, Object... args) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public T query(String sql, Object... agrs) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public List<T> queryForlist(String sql, Object... args) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public <V> V getSingleval(String sql, Object... args) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void batch(String sql, Object[]... args) {
        // TODO Auto-generated method stub
        
    }

}

总结,由于之前实现接口的时候,忘记带了泛型,所以导致可能会使一些带泛型的方法会出现错误(除非一直用object类)。

猜你喜欢

转载自www.cnblogs.com/wrkjwl/p/9238623.html