您的位置:首页 > 其它

枚举与泛型知识点总结

2016-11-29 20:50 197 查看
枚举

使用枚举类型,可以取代以往定义常量的方式,同时枚举类型还赋予了程序在编译时进行自检的功能。以往设置常量,通常将常量放置在接口中,这样在程序中就可以直接使用,但常量不能够被修改。因为在接口中定义常量时,常量的修饰符为“final”和“static”。如下:

public interface Constants{

static final int Constants_A = 1;

static final int Constants_B = 12;

}

使用枚举类型定义常量的语法如下:

public enum Constants{

Constants_A,

Constants_B;//假如该变量后面还有其他变量,则用分号分开,否

//则可以不跟分号如下另一个例子

//Somesentce;

}

其中,enum是定义枚举类型关键字。当需要在程序中使用该常量时,可以使用Constants.Constants_A来表示。

另一个例子:

public enum Constants{

Constants_A,

Constants_B,

Constants_C

}

枚举类型的形式类似于内部类的形式,当编译某一个枚举类型的类时(以ConstantsTest为例),除了生成(ConstantsTest.class)之外,还有

(ConstantsTest$1.class)和(Constants.class)

枚举类型的常用方法:

1、values():该方法可以将枚举类型成员变量以数组的形式返回,例如Constants.values();//其中Constants是枚举类型的名称。

2、valueOf():该方法可以将普通字符串转变成枚举类型实例,例如Constants.valueOf();

3、compareTo():该方法用于比较两个枚举类型对象在定义时的顺序,相等为0,大于为1,小于为-1。

例:Constants_A.compareTo(Constants_B);

4、ordinal():该方法用于得到枚举成员的位置索引,

例如:Constants_A.ordinal();

枚举类型较传统定义常量的方式,除了具有参数类型检测的优势之哇,还具有其他方面的优势。

用户可以将一个枚举类型看作是一个类,他继承了java.lang.Enum类,当定义一个枚举类型时,每一个枚举类型成员都可以看作是枚举类型的一个实力,这些枚举类型成员默认都被final、public、static所修饰,所以当使用枚举类型成员时直接使用枚举类型名称调用枚举类型成员即可。

枚举类型的特点:

1、类型安全;

2、数据定义紧凑有效;

3、与程序的其他部分完美交互;

4、采用枚举类型的程序运行效率高。

注:

在枚举类型中可*以添加构造方法、添加成员变量,但是规定这个构造方法必须为private修饰符所修饰,举例如下:

public enum 枚举类型名称{

Constants_a,

Constants_b,

Constants_c;

private String description;

private 枚举类型名称 (){//无论有参还是无参,都是这样

//something ;

}

}

从枚举类型的构造方法的语法中可以看出,无论是有参构造方法,还是无参的构造方法修饰权限都是私有的(private)。定义一个有参构造方法之后,需要对枚举类型相应地使用该构造方法,如“Constants_A(“我是枚举A”);”和“Constants_D(3);”这两个语句相应地使用String类型和int类型。然后在枚举类型中定义两个成员变量,在构造方法中为这两个成员变量赋值,这样就可以在枚举类型中定义该成员变量的getXXX()方法了。

另:枚举类型也可以放在接口中,使枚举类型实现该接口,然后使每一个枚举类型实现接口中的方法。

顾名思义,泛型者,是指那些有着广泛的数据类型的定义形式。实质上泛型就是使程序定义安全的类型,在没有出现泛型之前,java也提供了对Object的引用“任意化”操作,这种操作就是对Object引用进行“向上转型”及“向下转型”的操作。但某些强制类型转换的错误也许不会被编译器捕捉,但最终却会在运行中出现错误异常(classCastException 类型转换异常)。由于强制类型转换存在安全隐患,所以自然就出现了泛型 机制。其语法如下:

类名{

//something

}

其中,T代表一个类型的名称。

Object类为最上层的父类,很多程序员为了使其所写的程序更为通用,在他们设计程序时通常传入的值与返回的值都以Object类型为主。当需要使用这些实例时,就必须要正确地将该实例转换为原来的类型,否则运行时将会发生异常。

在定义泛型之时,一般类型的名称使用T来表示,而容器的元素使用E来表达。

泛型的常规用法:

可以在使用泛型机制时声明一个数组,但是不可以使用泛型来建立数组的实例。例如:

public class ArrayClass{

private T[] array;

private T[] array1 = new T[10];//这种形式是错误的,因为它使用了泛型来建立数组的实例了。

}

集合类声明容器的元素,可以使用K和V两个字符来代表容器中的键值和与键值相对应的具体值。常用的被泛型化了的集合类主要有:

ArrayList、HashMap
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  枚举-泛型