- 在实现类中继续使用泛型,之后再实例化实现类对象的时候才指定具体的占位符的类型
package com.baidu.vo;
import com.dao.IBaseDAO;
public class EmpDAOImpl<K,V> implements IBaseDAO<K,V> {
@Override
public int daoCreate(V vo) {
System.out.println("数据创建完成");
return 0;
}
@Override
public int daoRemove(K[] dids) {
return 0;
}
@Override
public int daoUpdate(V vo) {
System.out.println("数据更新完成");
return 0;
}
@Override
public V[] daoFindAll() {
return null;
}
}
package com.CoderLB;
import com.baidu.vo.Dept;
import com.baidu.vo.Emp;
import com.baidu.vo.EmpDAOImpl;
public class Test {
public static void main(String[] args) {
EmpDAOImpl<String,Emp> mpl =new EmpDAOImpl<String,Emp>();
mpl.daoCreate(new Emp());
mpl.daoUpdate(new Emp());
EmpDAOImpl<Integer, Dept> mpl1=new EmpDAOImpl<Integer, Dept>();
mpl1.daoCreate(new Dept());
mpl1.daoUpdate(new Dept());
}
}
在接口继承接口的时候指定出具体的泛型类型
如果要实现类需要有自己特有的方法(还要扩充新的方法),那么还是离不开子接口,所以要使用子接口去继承父类接口(IBaseDAO)。
package com.dao;
import com.baidu.vo.Emp;
//操作雇员数据的标准
public interface IEmpDAO extends IBaseDAO<Integer,Emp> {
//新扩充的
public void say();
}
实现类
package com.baidu.vo;
import com.dao.IBaseDAO;
import com.dao.IEmpDAO;
public class EmpDAOImpl implements IEmpDAO {
@Override
public void say() {
System.out.println("HELLO");
}
@Override
public int daoCreate(Emp vo) {
return 0;
}
@Override
public int daoRemove(Integer[] dids) {
return 0;
}
@Override
public int daoUpdate(Emp vo) {
return 0;
}
@Override
public Emp[] daoFindAll() {
return new Emp[0];
}
}
public class Test {
public static void main(String[] args) {
EmpDAOImpl daoImpl = new EmpDAOImpl();
daoImpl.say();
}
}
//输出:HELLO
小结
接口泛型的使用方式
1. 在实现类中继续使用泛型,在实例化对象的时候指定泛型的具体类型
2. 在接口继承接口中指定泛型的具体类型