zoukankan      html  css  js  c++  java
  • java泛型

    1.什么是泛型
    泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

    泛型:泛型类      泛型接口     泛型方法

    作用:提高程序健壮性,简化代码
    泛型的默认值是Object

    jdk 要1.5以上

    2.泛型定义

    /**

    *泛型类

    *首先定义一个person的实体类 Person<A,B,C>其中A代表的就是一个泛型,调用时可以自定义数据类型

    */

    package com.temp;
    public class Person<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;
     }
    }
    /**
    *调用泛型类
    */
     
       //泛型的属性  属性的数据类型 由调用方来决定当前属性数据类型
       //integer 是int数据类型的封装类
       //Character 是char的类型的封装类
       //必定只能是类而不是基础数据类型的关键字
              Person<String, Integer, Character> p=new Person<>();
              p.setPname("mz");
              p.setPage(10);
              p.setPsex('男');
     
    /**
    *定义泛型方法
    */
    package com.temp;
    public class PresonMethod<M> {
     
      public M getValue(M elenment) {
       if(elenment!=null) {
        return elenment;
       }
       return elenment;
      }
    }
    /**
    *调用泛型方法
    */

       PresonMethod<Integer> pm=new PresonMethod<>();
       pm.getValue(20);
      
    /**
    *定义泛型接口
    */
    package com.temp;
    import java.util.List;
    /**
     * 泛型的结果实现可以在实现类中定义好 也可以在调用的地方定义
     * 接口实现接口 实现类实现类
     * 基础接口 自定义接口来扩展实现类的方法
     * @author dell
     *
     * @param <M>
     */
    public interface IBaseFace<M> {
     /**
      * 增加的公共方法
      * @param element
      * @return
      */
      public int addObject(M element);
    /**
     * 编辑 
     * @param element
     * @return
     */
      public int editObject(M element);
    /**
     * 删除
     * @param element
     * @return
     */
      public int removeObject(M element);
    /**
     * 查询单个对象的方法 
     * @param element
     * @return
     */
      public M queryObject(M element);
    /**
     * 查询多个对象的方法
     * @param element
     * @return
     */
      public List<M> queryObjects(M element);
     /**
      * 查询并且分页
      * @param element
      * @return
      */
     public List<M> queryObjectPage(M element); 
    }
     
     
    /**
    *定义基础接口
    */
    package com.temp;
    /**
     * 可以在当前类的接口确定它的数据类型
     * @author dell
     *
     */
    public interface IpersonFace extends IBaseFace<Person<String , Integer, Character>>{
     public boolean queryUserName(String uanem);
    }
     
     
    /**
    *调用泛型接口
    */
    package com.temp;
    import java.util.List;
    public class Personimpl implements IpersonFace{
     @Override
     public int addObject(Person<String, Integer, Character> element) {
      // TODO Auto-generated method stub
      return 0;
     }
     @Override
     public int editObject(Person<String, Integer, Character> element) {
      // TODO Auto-generated method stub
      return 0;
     }
     @Override
     public int removeObject(Person<String, Integer, Character> element) {
      // TODO Auto-generated method stub
      return 0;
     }
     @Override
     public Person<String, Integer, Character> queryObject(Person<String, Integer, Character> element) {
      // TODO Auto-generated method stub
      return null;
     }
     @Override
     public List<Person<String, Integer, Character>> queryObjects(Person<String, Integer, Character> element) {
      // TODO Auto-generated method stub
      return null;
     }
     @Override
     public List<Person<String, Integer, Character>> queryObjectPage(Person<String, Integer, Character> element) {
      // TODO Auto-generated method stub
      return null;
     }
     @Override
     public boolean queryUserName(String uanem) {
      // TODO Auto-generated method stub
      return false;
     }
    }
  • 相关阅读:
    旋转编码器控制线扫相机
    函数被const修饰,const修饰的究竟是谁?
    静态函数不能引用非静态成员变量的原因,this指针
    Ubuntu18.04 截图工具flameshot
    基于STM32的uCGUI移植和优化
    基于bootsplash的嵌入式linux启动画面定制
    uC/OS-II源码分析(一)
    uC/OS-II源码分析(二)
    uC/OS-II源码分析(三)
    uC/OS-II源码分析(四)
  • 原文地址:https://www.cnblogs.com/chenjiahao9527/p/10898826.html
Copyright © 2011-2022 走看看