zoukankan      html  css  js  c++  java
  • 泛型和枚举

    泛型:

    用于解决安全问题,是一个安全机制.

    泛型格式;通过<>定义操作的引用数据类型。

    使用:当类中要操作的引用数据类型不确定的时候,早起定义Object来完成扩展,现在定义泛型类来扩展。 泛型类定义的泛型,在整个类中有效,如果被方法是用,那么泛型类对象的明确要操作的具体类型。所有方法类型不确定,那么可以将泛型定义在方法上。

    public <T> T  print(T t){//<T>定义泛型     T返回类型

      return t;

    }

    静态泛型方法:

    1、静态方法不可以访问类上定义的泛型。

    2、如果静态方法操作的引用数据类型不确定,可以将泛型定义在方法上。

    public static <T> void menthods(T t){

    }

    泛型限定:

     public static void print(ArrayList<? extends Person> aa){

    <?>通配符

    <?   extends(继承)   object(类的上限)> 

    <?  super  Student(类的下限)>

    枚举:

    关键字:enum

    语法定义: 创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)。枚举类型符合通用模式 Class Enum<E extends Enum<E>>,而 E 表示枚举类型的名称。枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。

    public enum Meiju {

      Yellow("黄色",1),blue("蓝色",2),red("红色",3);

      private String name;

      private int index;

    private Meiju(String name,int index){

      this.name=name;

      this.index=index;

    }

    public void setName(String name){

      this.name=name;

    }

    public String getName(){

      return name;

    }

    public void setNum(int index){

      this.index=index;

    }

    public int getNum(){

      return index;

    }

    }

    public class MeijuTest {

    public static void main(String[] args) {

    // System.out.println(Meiju.blue.getName());

      for(Meiju c:Meiju.values()){

      System.out.println(c+"  颜色为:"+c.getName()+"      序列为:"+c.getNum());

    }

    运行结果:

    Yellow  颜色为:黄色      序列为:1

    blue  颜色为:蓝色      序列为:2

    red  颜色为:红色      序列为:3

      EnumSet<Meiju> es=EnumSet.allOf(Meiju.class);

      System.out.println(es);

    运行结果:

    [Yellow, blue, red]

    //EnumSet

    EnumSet<EnumTest> weekSet = EnumSet.allOf(EnumTest.class);

      for (EnumTest day : weekSet) {

      System.out.println(day); }

    //EnumMap

    EnumMap<Meiju,String> map=new EnumMap<Meiju,String>(Meiju.class);

      map.put(Meiju.blue, "lan");

      map.put(Meiju.red, "hong");

      map.put(Meiju.Yellow, "huang");

      Set<Meiju> set=map.keySet();

      Iterator<Meiju> it=set.iterator();

    while(it.hasNext()){

      Meiju key=it.next();

      System.out.println(key+"  "+map.get(key));

    }

    }}

    运行结果:

    Yellow  huang

    blue  lan

    red  hong

    总结:

      enum 的语法结构尽管和 class 的语法不一样,但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum<E>。所以,实际上 enum 就是一个 class,只不过 java 编译器帮我们做了语法的解析和编译而已。
      简单讲: 可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enumjava是单一继承)。
  • 相关阅读:
    Android Camera子系统之Linux C应用开发人员View
    【Android】把外部文件拷贝的AVD安卓模拟器上的sdcard上,而且在AVD中浏览sdcard的文件
    HDU 2196 Computer(求树上每一个节点到其他点的最远距离)
    HDU 4081 Qin Shi Huang&#39;s National Road System 最小生成树
    scala 变量定义,基本操作符
    mybatis or
    Nginx
    hessian协议原理
    同一台电脑上装两个或两个以上的tomcat服务器
    端口号
  • 原文地址:https://www.cnblogs.com/tanghao666/p/7207441.html
Copyright © 2011-2022 走看看