Java 枚举活用
/**
* 联盟神兽、神兽资源枚举
*
* @author TonyCody
* @author 13-9-22
* @time 下午5:35
*/
public enum LegionDogzType { FOOD(1) {
@Override
public int getResource(LegionDogzVO dogz) {
return dogz.getFood();
} @Override
public boolean isCDUp(UserLimitVO ul) {
return cdUp(this, ul);
} @Override
public int getCDTime(UserLimitVO ul) {
return ul.getDogzFoodSec();
} @Override
public void increateCDTime(UserLimitVO ul, int sec) {
ul.setDogzFoodSec(sec);
} @Override
public void increateResource(LegionDogzVO dogz, int value) {
dogz.setFood(dogz.getFood() + value);
}
},
WOOD(2) {
@Override
public int getResource(LegionDogzVO dogz) {
return dogz.getWood();
} @Override
public int getCDTime(UserLimitVO ul) {
return ul.getDogzWoodSec();
} @Override
public boolean isCDUp(UserLimitVO ul) {
return cdUp(this, ul);
} @Override
public void increateCDTime(UserLimitVO ul, int sec) {
ul.setDogzWoodSec(sec);
} @Override
public void increateResource(LegionDogzVO dogz, int value) {
dogz.setWood(dogz.getWood() + value);
}
},
STONE(3) {
@Override
public int getResource(LegionDogzVO dogz) {
return dogz.getStone();
} @Override
public int getCDTime(UserLimitVO ul) {
return ul.getDogzStoneSec();
} @Override
public boolean isCDUp(UserLimitVO ul) {
return cdUp(this, ul);
} @Override
public void increateCDTime(UserLimitVO ul, int sec) {
ul.setDogzStoneSec(sec);
} @Override
public void increateResource(LegionDogzVO dogz, int value) {
dogz.setStone(dogz.getStone() + value);
}
},
BRONZE(4) {
@Override
public int getResource(LegionDogzVO dogz) {
return dogz.getBronze();
} @Override
public int getCDTime(UserLimitVO ul) {
return ul.getDogzBronzeSec();
} @Override
public boolean isCDUp(UserLimitVO ul) {
return cdUp(this, ul);
} @Override
public void increateCDTime(UserLimitVO ul, int sec) {
ul.setDogzBronzeSec(sec);
} @Override
public void increateResource(LegionDogzVO dogz, int value) {
dogz.setBronze(dogz.getBronze() + value);
}
},
COPPERS(5) {
@Override
public int getResource(LegionDogzVO dogz) {
return dogz.getCoppers();
} @Override
public int getCDTime(UserLimitVO ul) {
return ul.getDogzCoppersSec();
} @Override
public boolean isCDUp(UserLimitVO ul) {
return cdUp(this, ul);
} @Override
public void increateCDTime(UserLimitVO ul, int sec) {
ul.setDogzCoppersSec(sec);
} @Override
public void increateResource(LegionDogzVO dogz, int value) {
dogz.setCoppers(dogz.getCoppers() + value);
}
}; public static LegionDogzType getLegionDogzType(int type) {
for (LegionDogzType e : LegionDogzType.values()) {
if (e.getType() == type) {
return e;
}
}
return null;
} /**
* 增加资源
*
* @param dogz
* @param value
*/
public abstract void increateResource(LegionDogzVO dogz, int value); /**
* 获取资源
*
* @param dogz
*/
public abstract int getResource(LegionDogzVO dogz); /**
* 设置 CD 时间
*
* @param ul
* @param sec
*/
public abstract void increateCDTime(UserLimitVO ul, int sec); /**
* 获取 CD 时间
*
* @param ul
*
* @return
*/
public abstract int getCDTime(UserLimitVO ul); /**
* 是否到 CD 时间
*
* @param ul
*
* @return
*/
public abstract boolean isCDUp(UserLimitVO ul); private byte type; protected byte getType() {
return type;
} protected void setType(byte type) {
this.type = type;
} private LegionDogzType(int type) {
this.type = (byte) type;
} protected boolean cdUp(LegionDogzType type, UserLimitVO ul) {
if (type.getCDTime(ul) > 0) {
if (type.getCDTime(ul) - DateUtil.getNowSec() > 0) {
return false;
} else {
type.increateCDTime(ul, 0);
}
}
return true;
}
}
Java 枚举活用的更多相关文章
- Java 枚举用法详解
概念 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性. 在Java中,被 enum 关键字修饰的类型就是枚举类型.形式如下: enum Color { RED, GR ...
- java 枚举类型分析
最近做android开发,需要用到枚举值,这样可以连续赋值,我按之前c++那样书写,如下所示: public enum ColorSelect { RED_BAGE = 0, GREEN_BAGE, ...
- 【转】java枚举类型enum的使用
原文网址:http://blog.csdn.net/wgw335363240/article/details/6359614 java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到 ...
- 【转】Java 枚举7常见种用法
原文网址:http://softbeta.iteye.com/blog/1185573 Java 枚举7常见种用法 博客分类: java java枚举enmu 原创地址:http://blog.li ...
- 【转】掌握java枚举类型(enum type)
原文网址:http://iaiai.iteye.com/blog/1843553 1 背景 在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量.之前我们通常利用 ...
- 转载 java枚举类型enum的使用 (原文地址:http://blog.csdn.net/wgw335363240/article/details/6359614)
java枚举类型enum的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用public final static 类型来定义呢?以前我们都是采 ...
- Java枚举类使用
用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...
- Java 枚举类型简介
目录 Java 枚举示例 Java 枚举构造函数 枚举类型是用于定义常量集合的特殊类型,更确切的说,JAVA枚举类型是一种特殊的 java 类.枚举类型可以包含常量.方法等.在 java5 中添加了 ...
- Java 枚举(enum) 详解7种常见的用法
Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...
随机推荐
- Android:TextView 自动滚动(跑马灯) (转)
Android:TextView 自动滚动(跑马灯) TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true ...
- .NET破解之100%营销QQ辅助软件【更新】
应网友要求,更新一个以前的版本,效果如下: 更改方法 修改一:更改对象的可访问性 Assembly: RWXComLibrary, Version=2.1.0.3 Name: RWXComLibrar ...
- 聊聊GISer的职业发展
一.前言 去年写了一篇名为<GISer们还有机会屌丝逆袭吗?>的博文,希望能和广大GISer一起探讨地理信息产业留给小团队和个人的机会.文章发布后,很多GISer通过网络和我进行了交流,其 ...
- C语言错误之--初始值(低级错误)
今天犯了一个低级错误,虽然低级,但是也不能忽视,一个低级错误以后可能小则浪费时间和精力,大则酿成整个app的项目bug.
- ReSharper 卸载后 VS2012 没有提示问题
虽然ReSharper非常强大,但由于公司电脑配置太差,被迫卸载了.但发现卸载后,VS2012自带的提示都没有了. 网上找了下相关的解决方法.摘抄下来,作为自己笔记. 解决方法原文出处:http:// ...
- android 开发小记
1.fragment & activity when config changes, activity will restart but fragment can be store. 2.te ...
- [转]Linux下的Makefile
Makefile 介绍——————— make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序. 首先,我们用一个示例来说明Makefile的书写规则.以便 ...
- centos 安装完Nginx后,为什么访问不了?
很多时候,安装完成后,服务也启动了 但是访问不了 看看是不是防火墙开启了: 本地试下端口是否可访问telnet 192.168.4.155 80 CentOS 7默认使用的是firewall作为防火墙 ...
- swift函数的用法,及其嵌套实例
import Foundation //swift函数的使用 func sayHello(name userName:String ,age:Int)->String{ return " ...
- sass+compass+bootstrap三剑合璧高效开发记录
1. 先搭建环境,下载node.js,rubyinstaller,安装, 安装rubyinstaller时,要选上include system path,这样就会自动将node.js执行添加到wind ...