java枚举使用详解

分手后的思念是犯贱 2022-08-10 14:42 237阅读 0赞



在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。

例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。

在java中如何更好的使用这些“数据集”呢?因此枚举便派上了用场,以下代码详细介绍了枚举的用法。

复制代码

  1. package
  2. com.ljq.test;
  3. /**
  4. * 枚举用法详解
  5. *
  6. *
  7. @author
  8. jiqinlin
  9. *
  10. */
  11. public
  12. class
  13. TestEnum {
  14. /**
  15. * 普通枚举
  16. *
  17. *
  18. @author
  19. jiqinlin
  20. *
  21. */
  22. public
  23. enum
  24. ColorEnum {
  25. red, green, yellow, blue;
  26. }
  27. /**
  28. * 枚举像普通的类一样可以添加属性和方法,可以为它添加静态和非静态的属性或方法
  29. *
  30. *
  31. @author
  32. jiqinlin
  33. *
  34. */
  35. public
  36. enum
  37. SeasonEnum {
  38. //
  39. 注:枚举写在最前面,否则编译出错
  40. spring, summer, autumn, winter;
  41. private
  42. final
  43. static
  44. String position
  45. =
  46. "
  47. test
  48. "
  49. ;
  50. public
  51. static
  52. SeasonEnum getSeason() {
  53. if
  54. (
  55. "
  56. test
  57. "
  58. .equals(position))
  59. return
  60. spring;
  61. else
  62. return
  63. winter;
  64. }
  65. }
  66. /**
  67. * 性别
  68. *
  69. * 实现带有构造器的枚举
  70. *
  71. *
  72. @author
  73. jiqinlin
  74. *
  75. */
  76. public
  77. enum
  78. Gender{
  79. //
  80. 通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错
  81. //
  82. 赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;如果不赋值则不能写构造器,赋值编译也出错
  83. MAN(
  84. "
  85. MAN
  86. "
  87. ), WOMEN(
  88. "
  89. WOMEN
  90. "
  91. );
  92. private
  93. final
  94. String value;
  95. //
  96. 构造器默认也只能是private, 从而保证构造函数只能在内部使用
  97. Gender(String value) {
  98. this
  99. .value
  100. =
  101. value;
  102. }
  103. public
  104. String getValue() {
  105. return
  106. value;
  107. }
  108. }
  109. /**
  110. * 订单状态
  111. *
  112. * 实现带有抽象方法的枚举
  113. *
  114. *
  115. @author
  116. jiqinlin
  117. *
  118. */
  119. public
  120. enum
  121. OrderState {
  122. /**
  123. 已取消
  124. */
  125. CANCEL {
  126. public
  127. String getName(){
  128. return
  129. "
  130. 已取消
  131. "
  132. ;}},
  133. /**
  134. 待审核
  135. */
  136. WAITCONFIRM {
  137. public
  138. String getName(){
  139. return
  140. "
  141. 待审核
  142. "
  143. ;}},
  144. /**
  145. 等待付款
  146. */
  147. WAITPAYMENT {
  148. public
  149. String getName(){
  150. return
  151. "
  152. 等待付款
  153. "
  154. ;}},
  155. /**
  156. 正在配货
  157. */
  158. ADMEASUREPRODUCT {
  159. public
  160. String getName(){
  161. return
  162. "
  163. 正在配货
  164. "
  165. ;}},
  166. /**
  167. 等待发货
  168. */
  169. WAITDELIVER {
  170. public
  171. String getName(){
  172. return
  173. "
  174. 等待发货
  175. "
  176. ;}},
  177. /**
  178. 已发货
  179. */
  180. DELIVERED {
  181. public
  182. String getName(){
  183. return
  184. "
  185. 已发货
  186. "
  187. ;}},
  188. /**
  189. 已收货
  190. */
  191. RECEIVED {
  192. public
  193. String getName(){
  194. return
  195. "
  196. 已收货
  197. "
  198. ;}};
  199. public
  200. abstract
  201. String getName();
  202. }
  203. public
  204. static
  205. void
  206. main(String[] args) {
  207. //
  208. 枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值
  209. ColorEnum colorEnum
  210. =
  211. ColorEnum.blue;
  212. switch
  213. (colorEnum) {
  214. case
  215. red:
  216. System.out.println(
  217. "
  218. color is red
  219. "
  220. );
  221. break
  222. ;
  223. case
  224. green:
  225. System.out.println(
  226. "
  227. color is green
  228. "
  229. );
  230. break
  231. ;
  232. case
  233. yellow:
  234. System.out.println(
  235. "
  236. color is yellow
  237. "
  238. );
  239. break
  240. ;
  241. case
  242. blue:
  243. System.out.println(
  244. "
  245. color is blue
  246. "
  247. );
  248. break
  249. ;
  250. }
  251. //
  252. 遍历枚举
  253. System.out.println(
  254. "
  255. 遍历ColorEnum枚举中的值
  256. "
  257. );
  258. for
  259. (ColorEnum color : ColorEnum.values()){
  260. System.out.println(color);
  261. }
  262. //
  263. 获取枚举的个数
  264. System.out.println(
  265. "
  266. ColorEnum枚举中的值有
  267. "
  268. +
  269. ColorEnum.values().length
  270. +
  271. "
  272. "
  273. );
  274. //
  275. 获取枚举的索引位置,默认从0开始
  276. System.out.println(ColorEnum.red.ordinal());
  277. //
  278. 0
  279. System.out.println(ColorEnum.green.ordinal());
  280. //
  281. 1
  282. System.out.println(ColorEnum.yellow.ordinal());
  283. //
  284. 2
  285. System.out.println(ColorEnum.blue.ordinal());
  286. //
  287. 3
  288. //
  289. 枚举默认实现了java.lang.Comparable接口
  290. System.out.println(ColorEnum.red.compareTo(ColorEnum.green));
  291. //
  292. -1
  293. //
  294. --------------------------
  295. System.out.println(
  296. "
  297. ===========
  298. "
  299. );
  300. System.err.println(
  301. "
  302. 季节为
  303. "
  304. +
  305. SeasonEnum.getSeason());
  306. //
  307. --------------
  308. System.out.println(
  309. "
  310. ===========
  311. "
  312. );
  313. for
  314. (Gender gender : Gender.values()){
  315. System.out.println(gender.value);
  316. }
  317. //
  318. --------------
  319. System.out.println(
  320. "
  321. ===========
  322. "
  323. );
  324. for
  325. (OrderState order : OrderState.values()){
  326. System.out.println(order.getName());
  327. }
  328. }
  329. }

发表评论

表情:
评论列表 (有 0 条评论,237人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java类型使用详解

    在Java中,枚举类型(Enumeration)是一种特殊的数据类型,它允许程序员定义一个有限的、可枚举的数据集。枚举类型的定义通常在类的内部,在类的外部使用。 以下是一些关

    相关 java使用详解

    在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。 例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据

    相关 java使用详解

     在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。 例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬

    相关 Java介绍及使用详解

    在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。 例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据

    相关 Java 详解

    在博客系统中,一篇文章有且可能有这几种状态, 数据库中`article`文章表中`state`字段存储数值,表示其状态: 0(已发表Published) 1(

    相关 java(enum)详解

           一.为什么要使用枚举.             需求:定义一个Employee(员工),使用一个变量restday来表示他哪一天休息.如图:         

    相关 java使用详解

    [java枚举使用详解][java] 在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。 例如星期一到星期日七个数据