泛型:
泛型的本质是参数化类型,所操作的数据类型被指定为一个参数。
这种参数类型还可以用在类,接口和方法的创建中,分别被称为泛型类,泛型接口,泛型方法。
泛型实现了类型安全的代码 ,增强了代码的可读性。
泛型的好处就是在编译的时候检查类型的安全,并且所有的强制类型转换都是自动和隐式的,提高代码的重用率。
泛型类可以有多个类型参数。
泛型的类型参数可以是自定义类型,不能是简单类型(不能是基本类型)。
定义泛型方法时,必须在返回值前面加个<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;
}