泛型解析
泛型
1、泛型类
public class Pig<A,B,C> { private A pname; private B page; private C psex; public A getPname() { return pname; } public void setPname(A pname) { this.pname = pname; } public B getPage() { return page; } public void setPage(B page) { this.page = page; } public C getPsex() { return psex; } public void setPsex(C psex) { this.psex = psex; } @Override public String toString() { return "Pig [pname=" + pname + ", page=" + page + ", psex=" + psex + "]"; } }
2、泛型接口
/** * 泛型的接口的实现 可以在实现类中定义好 也可以在调用的地方定义好。 * * 接口实现接口 实现类 实现 类 * * 基础接口 自定义接口 来扩张实现类的方法 * @author Admin * * @param <E> */ public interface IPig<E> { //CRUD /** * 增加公共的方法 * @param elenment * @return */ public int addObj(E elenment); /** * 编辑的方法 * @param elenment * @return */ public int updateObj(E elenment); /** * 删除的方法 * @param elenment * @return */ public int deleteObj(E elenment); /** * 查询单个对象的方法 * @param elenment * @return */ public E getObj(E elenment); /** * 查询多个对象的方法 * @param elenment * @return */ public List<E> getAllObj(E elenment); /** * 分页的方法 * @param elenment * @return */ public List<E> queryObjPage(E elenment);
2.1 接口继承接口
public class PigImpl implements IPigP{ @Override public int addObj(Pig<String, Integer, Character> elenment) { // TODO Auto-generated method stub return 0; } @Override public int updateObj(Pig<String, Integer, Character> elenment) { // TODO Auto-generated method stub return 0; } @Override public int deleteObj(Pig<String, Integer, Character> elenment) { // TODO Auto-generated method stub return 0; } @Override public Pig<String, Integer, Character> getObj(Pig<String, Integer, Character> elenment) { // TODO Auto-generated method stub return null; } @Override public List<Pig<String, Integer, Character>> getAllObj(Pig<String, Integer, Character> elenment) { // TODO Auto-generated method stub return null; } @Override public List<Pig<String, Integer, Character>> queryObjPage(Pig<String, Integer, Character> elenment) { // TODO Auto-generated method stub return null; } @Override public boolean getName(String name) { // TODO Auto-generated method stub return false; } }
3、泛型方法
//泛型方法 public E getValue(E elenment) { if(elenment !=null) { return elenment; } return null; }
4、 泛型属性
//泛型的属性 Pig<String, Integer, Character> p=new Pig(); p.setPname("zs"); p.setPage(8); p.setPsex('公'); System.out.println(p.toString());
泛型的属性 属性的数据类型 由调用方 来决定当前属性的数据类型
Integer是int数据类型的封装类
Character是char的数据类型的封装类
泛型的数据类型必定只能是类 而不是基础数据类型的 关键字
方便扩展 例如(公用类、方便调用时数据类型可改变)