java泛型和枚举

来源:互联网 发布:携程 知乎 编辑:程序博客网 时间:2024/05/16 06:52

              泛型:

        泛型的本质是参数化类型,所操作的数据类型被指定为一个参数。

         这种参数类型还可以用在类,接口和方法的创建中,分别被称为泛型类,泛型接口,泛型方法。

           泛型实现了类型安全的代码 ,增强了代码的可读性。

               泛型的好处就是在编译的时候检查类型的安全,并且所有的强制类型转换都是自动和隐式的,提高代码的重用率。

          泛型类可以有多个类型参数。

            泛型的类型参数可以是自定义类型,不能是简单类型(不能是基本类型)。

                  定义泛型方法时,必须在返回值前面加个<T>,来声明这是一个泛型方法,持有一个泛型T,然后在可以用泛型T作为方法的返回值。

            泛型的参数类型可以使用extends语句。

               泛型的参数类型还可以是通配符类型。

package lianxi;import java.io.PrintStream;import java.util.ArrayList;public class lianxi10 {public static void main(String[]args){ArrayList<String>list = new ArrayList<String>();list.add("12345");list.add("上山打老虎");list.add("老虎没打到");list.add("打到小白鼠");printList(System.out,list);System.out.println();ArrayList<Integer> list2 = new ArrayList<Integer>();list2.add(111);list2.add(222);list2.add(333);list2.add(444);}public static void printList(PrintStream out, ArrayList<String> list) {// TODO Auto-generated method stubfor (int i = 0, n = list.size(); i < n; i++) {if (i > 0) {out.print(", ");}out.print(list.get(i).toString());}} }

            枚举:

   枚举其实就是一种类型,跟int,char类型,差不多,就是定义变量时限制输入的,你只能够赋enum里面规定的值。

     用关键字enum来定义一个枚举类。

        所有的枚举类继承自java.lang.Enum。

           枚举就是一个类(class),还是一个不可被继承的final类。

               这些枚举值都是public static final的,也就是我们所定义的常量方式,所以说枚举类中的枚举值最好全部大写。

                  既然枚举是一个类(class),那么在枚举类型中就有构造器,方法和数据域。

                     构造器只在构造枚举值的时候被调用。

                         构造器只能有私有private,不能有public构造器。


   实际上enum也是一个类,只不过java编译器帮我们做了语法的解析和编译而已。

      可以把enum当成一个普通的类,它们可以定义一些属性和方法。

          不一样的是enum不能使用关键字exdents继承其他类。

              因为enum是单一继承,已经继承了java.lang.Enum。


     使用规则:

    如果只有单独一个值的时候,还是把这个任务留给常量吧。

        如果定义了一组值,而这些值中的任何一个都可以用于特定的数据类型,那么枚举用在这个地方再合适不过了。

package lianxi;public class lianxi11 { public static void tell(Season a)      {         switch(a)          {          case Spring:              System.out.println(a+"春");              break;          case Summer:System.out.println(a+"夏");             break;          case Fall:System.out.println(a+"秋");             break;           case Winter:System.out.println(a+"冬");              break;                     }              }          public static void main(String[] args) {                    for(Season a:Season.values())          {              System.out.println(a);                     }                   }    }    enum Season   {       Spring,Summer,Fall,Winter;     }  

 





   

0 0
原创粉丝点击