java中使用枚举
来源:互联网 发布:11平台登录网络错误 编辑:程序博客网 时间:2024/06/06 00:14
jdk1.5增加了枚举这一类型,用enum声明。对于一特定的类型,我们可以使用枚举,如,性别,星期,等。
定义一个枚举,用enum声明,枚举列表必须写在最前面,否则编译出错,一个简单的枚举如下:
- public enum Gender{
- MAN,WOWEN
- }
为了便于理解,我们使用 一个java类来模拟前面的枚举
- public class Gender{
- private Gender(){ }
- public static fianl Gender MAN = new Gender();
- public static fianl Gender WOWEN = new Gender();
- }
这样就可以达到和枚举差不多的效果,
每个枚举如:MAN,就是一个Gender类型的实例,
其实枚举是个特殊的java类,它同样可以拥有属性和方法,甚至抽象方法,。
改一下前面的枚举
- public enum Gender{
- MAN,WEMEN; //也可以不使用大写,建议使用大写
- private String name;//属性
- public void setName(String name){
- this.name = name;
- }
- //方法
- public String getName(){
- return this.name;
- }
- }
- public class EnumTest {
- public static void main(String[] args) {
- Gender.MAN.setName("男");//通过setter方法赋值
- System.out.println(Gender.MAN.getName()); //通过getter方法取值
- //Gender.MAN能够调用setter,getter方法,就是因为Gender.MAN是Gender的实例对象。
- }
- }
再改一下
- public enum Gender{
- MAN,WEMEN("女");
- private String name;
- private Gender(){} //因为添加有参的构造方法,而MAN没有传参,所以要提供无参的构造方法
- private Gender(String name){ //有参的构造方法 ,WEMEN("女") 就是掉用该构造方法,()里的就是参数
- this.name = name;
- }
- public void setName(String name){
- this.name = name;
- }
- public String getName(){
- return this.name;
- }
- }
- public class EnumTest {
- public static void main(String[] args) {
- Gender.MAN.setName("男");
- System.out.println(Gender.MAN.getName());
- System.out.println(Gender.WEMEN.getName()); //输出 。 女
- }
- }
注意,枚举的构造方法必须是private,不管是有参还是无参。
再看一下有抽象方法的枚举
- public enum Gender{
- MAN {
- @Override
- String getName() {
- // TODO Auto-generated method stub
- return "男";
- }
- },WEMEN {
- @Override
- String getName() {
- // TODO Auto-generated method stub
- return "女";
- }
- };
- abstract String getName(); //抽象方法
- }
一个枚举有抽象方法,刚才说了MAN是Gender实例对象,现在Gender有抽象方法了,那么MAN必须是Gender的实现类的实例对象。
所以MAN后面紧跟一大括号,里面实现了getName()方法。MAN后面的大括号就是个匿名内部类,也就是实现类。
枚举就是构造方法私有,其元素是自己的实例对象或实现类的实例对象,是个特殊的java类,可以有属性,方法,有,无参构造方法(构造方法必须私有的)
,抽象方法,当枚举元素只有一个时,其实就是一个单例模式。
枚举类型映射到数据库
- @Entity
- public class User implements Serializable{
- private String username;
- private String password;
- private Gender gender;
- @Id @Column(length=18)
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- @Column(length=32,nullable=false)
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- //枚举类型映射数据库的,注解EnumType.STRING 表示以字符串保存到数据库
- @Enumerated(EnumType.STRING) @Column(nullable=false,length=5)
- public Gender getGender() {
- return gender;
- }
- public void setGender(Gender gender) {
- this.gender = gender;
- }
- }
本文转自:http://blog.csdn.net/zuxianghuang/article/details/7539428
- Java中使用枚举
- java中使用枚举
- java 中使用枚举
- java中枚举的使用
- java中枚举的使用
- java中枚举的使用
- JAVA中枚举的使用
- java中枚举的使用
- 再谈在Java中使用枚举
- 再谈在Java中使用枚举
- Java中关于枚举类型的使用
- java中Enum(枚举)的使用
- java中枚举enum的使用
- java中枚举类型的使用
- 再谈在Java中使用枚举
- 如何在Java中使用枚举
- Java中枚举类的使用总结
- Java 中枚举类型的使用
- Mysql Incorrect string value
- 配置JDK和Tomcat环境变量 .
- jquery.autocomplete.js学习完整篇
- sp_repldone/sp_replcounters 无法执行的问题
- GoogieSpell: 仿Gmail风格的拼写检查器
- java中使用枚举
- 我对计算机科学专业的期望与目标
- Oracle数据库对象
- 我的vim配置
- 均匀分割问题 负载均衡问题
- Oracle表分区总结
- Oracle之函数与触发器
- 一个计算机爱好者的不完整回忆(四十六)最近的两个应用
- Connectify Key