最有效的网站推广方案,大丰区城乡和住房建设局网站,做网站 服务器多少钱一年,婚庆 wordpress枚举类型与泛型 枚举类型可以取代以往常量的定义方式#xff0c;即将常量封装在类或接口中
使用枚举类型设置常量
关键字为enum 枚举类型的常用方法
values()方法
枚举类型实例包含一个values()方法#xff0c;该方法将枚举中所有的枚举值以数组的形式返回。 valueOf()可…枚举类型与泛型 枚举类型可以取代以往常量的定义方式即将常量封装在类或接口中
使用枚举类型设置常量
关键字为enum 枚举类型的常用方法
values()方法
枚举类型实例包含一个values()方法该方法将枚举中所有的枚举值以数组的形式返回。 valueOf()可以将普通字符串转换为枚举类型
compareTo()方法用于比较两个枚举类型对象定义时的顺序。 枚举类型中的ordinal()方法用于获取某个枚举对象的位置索引值。 注意
关于构造方法在枚举类型中无论是无参构造方法还是有参构造方法修饰权限都为private。
泛型
泛型实质上就是使程序员定义安全的类型。
将基本类型向上转型或者是向下转型时用错了类型或者并没有执行该操作就会出现异常但由于语法不存在错误因此可以被编译器接受但在执行时会出现ClassCastException异常。
定义泛型
类名T
T是泛型的名称代表某一种类型。如果不指定具体类型T则采用Object类型。
在使用类中的方法传递或返回数据类型时将不再需要进行类型转换操作而是使用在声明泛型类对象时“ ”符号中设置的数据类型。 在定义泛型类时可以声明多个类型在实例化指定类型的对象时就可以指定多个类型。
Class MyclassT1,T2{}
MyclassBooleanFloat m new MyclassBooleanFloat()
定义泛型类时也可以声明数组类型但注意不可以使用泛型来建立数组的实例。 使用泛型实例化常用集合类 泛型的高级用法
限制泛型可用类型
Class 类名称T extends anyClass
使用泛型限制后泛型类的类型必须实现或继承anyClass这个接口或类且必须使用extends关键字。例如下列的l1和l2是正确的l3则不能。 当没有使用extends关键字限制泛型类型时默认Object类下的所有子类都可以实例化泛型类对象。
使用类型通配符
作用是在创建一个泛型类对象时限制这个泛型类的类型实现或继承某个接口或类的子类。
泛型类名称 extends List a null
还可以将该实例放置在方法的参数中。
Public void doSomething(A extends List a){}
如果使用A?这种形式实例化泛型类对象则默认表示可以将A指定为实例化Object及以下的子类类型。
“List? l2 l1”语句与“List l2 l1”语句存在何种本质区别这里需要注意的是对于使用通配符的对象不能向其中加入新的信息只能从其中获取或删除信息。
泛型类型限制除了可以向下限制还可以进行向上限制只要在定义时使用super关键字即可。例如像“A? super List a null;”这样定义后对象a只接受List接口或上层父类类型如“a new AObject();”。
定义为泛型的类和接口也可以被继承与实现。
如果在SubClass类继承ExtendClass类时保留父类的泛型类型需要在继承时指明如果没有指明直接使用“extends ExtendsClass”进行继承操作则SubClass类中的T1、T2和T3都会自动变为Object类型所以在一般情况下都将父类的泛型类型进行保留。 泛型总结
泛型的类型参数只能是类类型不可以是简单类型如Aint这种泛型定义就是错误的。
泛型的类型个数可以是多个。
可以使用extends关键字限制泛型的类型。
可以使用通配符限制泛型的类型