zoukankan      html  css  js  c++  java
  • 关于定义泛型接口的使用

    定义了一个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类)。

  • 相关阅读:
    图片文件重命名
    MySql基础学习-Sql约束
    MySql基础学习-库表操作
    java内存模型
    数据库常用函数整理
    linux用户管理
    Db2数据库在Linux下的安装和配置
    图像金字塔
    特征值与特征向量
    齐次线性方程组
  • 原文地址:https://www.cnblogs.com/wrkjwl/p/9238623.html
Copyright © 2011-2022 走看看