17.枚举类型与泛型

我这些学习笔记,记录的都是我自己认为的知识点,可能以后再看的时候还要翻书,但是可以用来定位到准确的书中示例的位置,减少翻书重找的时间,利于自身知识体系的搭建。                   self-transcendence

第17章 枚举类型与泛型

17.1 枚举类型

使用枚举类型可以取代以往定义常量的方式,并且还有程序在编译时进行检查的功能。

17.1.1 使用枚举类型设置常量

以往设置常量,通常将常量放置在接口中,这样在程序中就可以直接使用,并且该常量不能被修改,因为在接口中定义常量时,该常量的修饰符为finalstatic

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

Public enum Constants{

Constants_A,

Constants_B,

Constants_C

}

enum是定义枚举类的关键字。程序中使用常量,用Constants.Constants_A来引用。

 

17.1.2 深入了解枚举类型

每一个枚举类都可以看做是一个类,当定义一个枚举类型时,每一个成员都可以看做一个枚举实例,这些成员都默认被final public static修饰,所以直接使用枚举类型名称嗲用枚举类型成员就行。

方法名称

具体含义

使用方法

values()

该方法可以将枚举类型成员以数组的形式返回

枚举名.values

valueOf()

该方法可以实现将普通字符串转换为枚举实例

枚举名.valueOf(“abc”)

compareTo()

该方法用于比较两个枚举对象在定义时的顺序

枚举名.compareTo

ordinal()

该方法用于得到枚举成员的位置索引

枚举名.ordinal

调用compareTo方法返回的结果,正值代表方法中参数在调用该方法的枚举对象位置之前;0代表两个互相比较的枚举成员的位置相同;负值代表方法中参数在调用该方法的枚举对象位置之后。

-------------------------------------------------------------------

17.2 泛型

泛型实质上就是使程序员定义安全的类型。在没有出现泛型之前,java也提供了对Object的引用“任意化”操作,这种“任意化”操作就是对Object引用进行向下转型及向上转型操作,但某些强制类型转换的错误也许不会被编译器捕捉,而在运行后出现异常,可见强制类型转换存在安全隐患,所以提供了泛型机制。

Object类为最上层的父类,很多程序员为了使程序更为通用,设计程序时通常使传入的值与返回的值都以Object类型为主。当需要使用这些实例时,必须正确地将该实例转换为原来的类型,否则就会发生异常。语法是 类名<T>

在定义泛型时,还可以声明多个类型:

MutiOverClass<T1,T2>

MutiOverClass:泛型类名称

这样实例化指定类型的对象时就可以指定多个类型:

MutiOverClass<Boolean,Float> aaa=new MutiOverClass<Boolean,Float>();

定义泛型类时也可以声明数组类型:

Public T[] getT(){};

Javaq中已经被泛型化的集合框架:

ArrayList<E>  HashMap<K,V>  HashSet<E>  Vector<E>

泛型的高级用法包括限制泛型可用类型和使用类型通配符等。

默认可以使用任何类型来实例化一个泛型类对象,但java中也对泛型类实例的类型做了限制,语法是:class 类名称<T extends anyClass> anyClass指某个接口或类。

使用泛型限制后,泛型类的类型必须实现或继承了anyClass这个接口或类。无论anyClass是接口还是类,在进行泛型限制时,都必须使用extends关键字。

类型通配符,主要作用是创建一个泛型对象时,限制这个泛型类的类型实现,或者继承某个接口或类的子类。要声明这样一个对象可以使用“?”通配符来表示,同时使用extends关键字来对泛型加以限制。语法是:泛型类名称<? extends List> a=null

其中,<? exteand List>表示类型未知,当需要使用该泛型对象时,可以单独实例化。

泛型类和泛型接口可以被继承和实现。

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值