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类)。

  • 相关阅读:
    PL/SQL基础
    Oracle数据库安装与卸载
    数据结构与算法学习(四):树
    数据结构与算法学习(三):算法经典问题
    数据结构与算法学习(二):栈和队列
    数据结构与算法学习(一):线性表
    NodeJS+axios上传图片
    WCF可靠性会话之服务分流
    MVC的局部视图传参的小技巧--见人才网头部导航
    MVC分层处理
  • 原文地址:https://www.cnblogs.com/wrkjwl/p/9238623.html
Copyright © 2011-2022 走看看