泛型解析

Posted wshemin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了泛型解析相关的知识,希望对你有一定的参考价值。

                                                                                            泛型

  
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的数据类型的封装类
  
  泛型的数据类型必定只能是类  而不是基础数据类型的   关键字
  
  
  方便扩展   例如(公用类、方便调用时数据类型可改变)
  
  

以上是关于泛型解析的主要内容,如果未能解决你的问题,请参考以下文章

FastJson将json解析成含有泛型对象,内部泛型对象再次解析出错的解决办法(Android)

深入理解C#泛型:new与where关键字全解析

片段(Java) | 机试题+算法思路+考点+代码解析 2023

Swift之深入解析“泛型”的底层原理

C#泛型方法解析

使用autofac无法解析打开泛型类型