日期:2014-05-19  浏览次数:20806 次

java 无类型常量。求解
package com.gimis.sinomach.business.domain.enums;
/**
 * 
 * [服务管理状态枚举]<p>
 * [功能详细描述]<p>
 * @author JinX
 * @version 1.0, 2012-4-13
 * @see
 * @since gframe-v100
 */
public enum MachineryServiceStateEnums
{
  DELETE("删除",(short)0) ,
  DAI_FUWUCHE ("等待指派服务车",(short)1),
  DAI_FUWUCHE_ARRIVE ("等待服务车到达",(short)2),
  DAI_ADD_FORM_1 ("等待填写派出单",(short)3),
  DAI_TEL_BACK ("等待电话回馈",(short)4),
  DAI_ADD_FORM_2 ("等待填写派出单",(short)5),
  DAI_UPLOAD ("等待上传扫描件",(short)6),
  DAI_CHECK_1 ("等待服务人员审核",(short)7),
  DAI_CHECK_2 ("等待结算人员审核",(short)8),
  FINISH ("完成",(short)9);

  private String text;
  private Short index;

  private MachineryServiceStateEnums(String text,Short index)
  {
  this.text = text;
  this.index = index;
  }

  public Short getIndex()
  {
  return index;
  }

  public String getText()
  {
  return this.text;
  }
   
}
一个类具体如上,看到最上面的部分没看懂,从DELETE开始到FINISH 结束的那段,其实我也不知道那是什么类型,所以求高手指导,最好说清楚用法,举个简单的例子。

------解决方案--------------------
不是什么类型,就是个枚举而已......
------解决方案--------------------
没举的使用
每个枚举如:DELETE,就是一个MachineryServiceStateEnums类型的实例,
DAI_CHECK_2 ,也可以这样,这样就是调用无参构造方法产生,
DAI_CHECK_2 ("等待结算人员审核",(short)8),这里就调用了有两个参数的构造方法,

private MachineryServiceStateEnums(String text,Short index)
{
this.text = text;
this.index = index;
}

就是这个构造方法产生,而且必须是private,

 private String text;
private Short index;

这两个就是属性,因为每个枚举就是一个MachineryServiceStateEnums类型的实例,
就可以通过geter,seter方法访问
所以 MachineryServiceStateEnums.DELETE.getXX 因为属性提供了geter,seter方法,


其实简单说,枚举就是一个构造方法私有化,有自身类型 的常量的 java类,

java 类模拟枚举
public class MachineryServiceStateEnums
{

private MachineryServiceStateEnums(){}

public static MachineryServiceStateEnums DELETE = new MachineryServiceStateEnums();
}

------解决方案--------------------
学习。尽管能看懂,比较有意思。。可以理解为 
DELETE 是new MachineryServiceStateEnums("参数")的一个引用