有!

泛型和枚举都是JDK1.5版本之后加入的新特性,泛型将程序代码的类型检查提前到了编译期间进行,枚举类型增强了程序代码的健壮性。

1. 泛型

在JDK1.5版本之前,如果在集合中添加了不同类型的数据,需要在程序的运行期间对类型之间的转换进行检查。

例如:

List arrayList=new arrayList();

在arrayList中添加String类型的对象和Integer对象,但是我们定义如下一个数组

String[] values=new String[arrayList.size()];

如果想要把arrayList转换成数组的话就会出现错误:

arrayList.toArray(values);//运行期间错误

这是因为List中包含了整型封装类型的对象。但是该错误只能在运行期间才能发现,程序能够正常的通过编译,并不会报错。

对于程序中出现的错误,应该尽早的通知程序员。泛型能够很好地解决这个问题。

1.1 泛型在集合中的应用

在JDK1.5版本之后Java提供了对泛型的支持。例如对于一个ArrayList列表来说,如果只想在列表中放入String类型元素,可以用下面的方法来实现:

ArrayList list=new ArrayList();

泛型使得编译器能够在编译期间对集合中加入的对象进行检查,如果加入了不同类型的对象,就会报错,而不必等到运行期间再进行相关的类型转换。

和原来没有使用泛型相比,它将原来需要在运行时期才能发现的异常提前到了编译期间,使得程序的安全性也大大提高,泛型一般用于集合类中。

1.2 泛型类和泛型方法

泛型类的定义如下:在类名的后面加上一对尖括号("<>"),在尖括号内部填入需要的类型。例如:

class Point< T>{  // 此处可以随便写标识符号,T是type的简称

private T var ; // var的类型由T指定,即:由外部指定

public T getVar(){ // 返回值的类型由外部决定 ,泛型方法

return var ;

}

public void setVar(T var){ // 设置的类型也由外部决定

this.var = var ;

}

};

public class GenericsDemo06{

public static void main(String args[]){

Point< String> p = new Point< String>() ; // 里面的var类型为String类型

p.setVar("it") ;  // 设置字符串

System.out.println(p.getVar().length()) ; // 取得字符串的长度

}

};  2.枚举

枚举也是JDK1.5之后的版本以后Java新加入的特性。使用枚举可以表示一组常量数据。枚举的本质是一个类,可以使用enum关键字来声明一个枚举类型,其声明方式如下:

[访问控制符] enum 枚举类型名{value1,value2,......}

使用枚举类型需要注意以下几点:

枚举类型可以定义在类的内部也可以定义在类的外部。如果定义在类的内部,那么其访问控制符可以是public,protected,private或者默认的控制符。如果定义在类的外部,其访问控制符只能是public和默认控制符;

枚举类型中定义的value值都默认为public static final的。其值一经定义就不能在被修改了。多个value值之间需要用逗号隔开;

枚举类型中除了可以声明常量之外还可以声明方法。但是方法需要在常量之后,并且常量和方法之间要用分号区分;

枚举类型中的值可以通过枚举类型名直接对他们进行访问;

枚举类型不能声明为abstract或者final类型;

例:

public enum Direction{

FORWARD,

BACK,

LEFT;

public void start(){

System.out.println("enum method");

}

}

2.1 枚举类型的常用方法

public final String name()//返回枚举常量的名称;

public final int ordinal()//返回枚举常量在枚举类型中的位置,第一个枚举值序号为0,依次类推;

public String toString()//返回枚举常量的名字,可以重写此方法;

public static valueOf(enumType,String name)//返回与name名字相对应的枚举常量;

2012年11月29日 16:48

java 泛型枚举_java枚举泛型相关推荐

  1. java泛型实例化_java基础-泛型举例详解

    泛型 泛型是JDK5.0增加的新特性,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数.这种类型参数可以在类.接口.和方法的创建中,分别被称为泛型类.泛型接口.泛型方法. 一.认识泛型 在没 ...

  2. java的枚举_Java 枚举

    Java 枚举 知识点 概念 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性. 在Java中,被 enum 关键字修饰的类型就是枚举类型.形式如下: enum Col ...

  3. java map 泛型 反射_java - 反射操作泛型

    反射操作泛型 Java的泛型采用的是泛型擦除的机制,泛型仅仅是给编译器javac使用的,为了确保数据的安全性和免去强制类型转换的问题,一旦编译完成,所有和泛型有关的类型将全部擦除. 为了通过反射操作这 ...

  4. java enum 随机_Java 枚举(enum)

    1.枚举(enum) enum是一个特殊的类,代表一组常量(不可更改的变量,如,final变量). 要创建enum,请使用enum关键字(而不是类或接口),并用逗号分隔常量.请注意,它们应使用大写字母 ...

  5. java return用法_Java枚举的高级用法之多键值的映射使用

    枚举Enum单映射使用 做Java的各位仁兄姐妹都知道,Java通过HashMap,以及枚举提供了方便的K-V映射功能,例如 枚举单映射使用 但是如果遇到多个键值映射,例如K-K-V的形式怎么办呢?可 ...

  6. java 泛型 恶心_Java的泛型原来这样让人不舒服

    Type erasure Java泛型中的类型擦除,意为只在编译时刻进行类型检查,实际在运行时,编译器会自动插入相应的转换(cast)代码. List list = new ArrayList(); ...

  7. c enum能像java一样吗_Java枚举替代我如何做到这一点?

    通过编码MIDI处理程序来自学Java.程序需要做的一件事是在MIDI音符编号及其对应的紧凑字符串表示形式之间来回转换.我看过使用枚举设置,但是由于命名限制,您无法执行类似的操作 c-1, c#-1, ...

  8. java 文件通配符_Java中泛型通配符的使用方法示例

    本文实例讲述了Java中泛型通配符的使用方法.分享给大家供大家参考,具体如下: 一 点睛 引入通配符可以在泛型实例化时更加灵活地控制,也可以在方法中控制方法的参数. 语法如下: 泛型类名 extend ...

  9. java enum 变量_java枚举使用详解

    package com.ljq.test; /** * 枚举用法详解 * * @author jiqinlin * */ public class TestEnum { /** * 普通枚举 * * ...

最新文章

  1. Oracle 物理结构(六) 文件-数据文件
  2. 你需要学好知识图谱——用AI技术连接世界
  3. Mozilla Labs Apps Developer Preview发布了
  4. Local模式下Spark程序只输出关键信息
  5. 机器学习模型解释性工具SHAP
  6. [reference]-ARM core timeline
  7. PHP语言弹窗图片,PHP_php中随机显示图片的函数代码,例如博客的展示窗 复制代码...
  8. 通过Dapr实现一个简单的基于.net的微服务电商系统(二)——通讯框架讲解
  9. linux机器不能上网,Deepin Linux 无法上网
  10. 数据在各层之间的发送过程
  11. 浅析托管与非托管C++代码(转)
  12. python执行adb命令_Python脚本之ADB命令(一)
  13. spring注解原理:从Controller注解切入了解spring注解原理
  14. 宝塔面板 服务器状态,宝塔面板中重启腾讯云服务器后无法登录宝塔面板怎么办?...
  15. 学籍管理的c语言程序代码,学生学籍管理系统-C语言程序代码
  16. 模拟学信网登录,Cookie 序列化,在反序列化之后不能用的问题
  17. 【BurpSuite】插件开发学习之J2EEScan(下)-主动扫描(61-76)
  18. 人所共有的19个不良习惯
  19. 面向服务的体系架构(SOA)—架构篇
  20. python自动下载酷狗音乐_使用Python下载酷狗音乐

热门文章

  1. SRAtoolkit使用
  2. java runnable 匿名_匿名类实现Runnable接口 | 学步园
  3. 饥荒海难机器人怎么用_饥荒联机版机器人角色详解 机器人怎么用 如何使用机器人 玩法建议-游侠网...
  4. TextView默认padding
  5. python超详细零基础 bs4解析之爬取唯美图片
  6. Show()跟ShowDialog()的区别
  7. vue锚点链接,react锚点链接
  8. stc8a8k64s4单片机控制步进电机(四相八拍)实现顺时针转一圈和逆时针转一圈
  9. 通信计算机发展前景,计算机通信技术发展及前景分析.doc
  10. 通信行业“惨淡经营”5G能救命吗?