java泛型和枚举

              泛型:

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

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

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

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

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

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

                  定义泛型方法时,必须在返回值前面加个<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 stub
		for (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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值