枚举值根据配置文件初始化|java中的枚举定义中的枚举常量后面如果没有括号初始化而枚举常量又是对象实例那从对象实例角度来说

|

1. 枚举变量的值的问题。默认情况下枚举变量与枚举变量表中的第一个常量的值一样

如果是声明的全局变量或者是静态的局部变量的话,没初始化,他就是0但这个0跟枚举的第一个值是没有关系的,是系统默认设的一个值给他,如果你设的是普通的局部变量,最好给他设个初始值,不然程序可能会出现问题。你可以这样测试:#include "stdio.h"typedef enum{ KeyScanState_0 = 0x01,//第一个值不设为0,设为1 KeyScanState_1 = 0x01, KeyScanState_2 = 0x02,}KeyScanState_Typedef;KeyScanState_Typedef KeyScanState;//声明成全局变量int main(){ printf("%d\n",KeyScanState);}你会发现,他输出是0,不是枚举的第一个值1,所以说,不初始化他的值跟枚举值没有关系,因为枚举变量实际上是当成整型数来处理的,全局变量和静态局部变量(加static修饰)默认设为0,

2. 如何从文本文件中读取值来初始化一个枚举类型

请在c:\下建立Caption.txt文本文件并输入内容,单击窗体实现功能:Private Sub Form_Click() Dim Str As String Open "c:\Caption.txt" For Input As #1 Line Input #1, Str Close #1 Label1.Caption = LblEnd SubPrivate Sub Form_Load() Label1.Caption = "请单击窗体!" Label1.FontSize = 20End Sub 我可以帮助你,你先设置我最佳答案后,我网络Hii教你。你的串号我已经记下,采纳后我会帮你制作

3. java建了一个enum,怎么初始化

估计你是不知道枚举的含义吧,一个枚举标量定义的时候就有几个值与其对应,说版明这个变量可权取值的集中可能,如你的方向,可取值L,LU,U,RU等。如果定义一个空的枚举值当然就是没有用的。使用的时候,直接Direction.L即可;望满意~~

4. 枚举变量未赋初值,其默认的值是多少

枚举变量未分配初始值。默认情况下,第一个枚举成员的默认值为“0”,后续枚专举成员值属为前一个枚举成员的值(按文本顺序)加一。但是,其值必须在基础类型可以表示的值范围内;

枚举类型,通过预定义列出所有值的标识符来定义有序集,其顺序与枚举类型描述中的标识符顺序一致。枚举类型的形式:(标识符1,…,标识符n)。

枚举元素只能是标识符,而不是数字常量或字符常量。枚举在C/C++/c#中,是一个被命名的整型常数的集合, 枚举在日常生活中很常见。例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,SATURDAY,就是一个枚举。

(4)枚举值根据配置文件初始化扩展阅读

使用枚举类型注意:

枚举中每个成员(标识符)结束符是"," 不是";", 最后一个成员可省略","。

初始化时可以赋负数, 以后的标识符仍依次加1。

枚举变量只能取枚举说明结构中的某个标识符常量。

5. mysql怎么获取数据表字段enum类型的默认值

enum有优点。但个人觉得。。。缺点更多,客观的讲:优点主要是在建数据 库的回时候就可以把一些值答给规范好。缺点是。。enum不适合PHP。主要是PHP是弱类型,如:你insert into ….. set a= 1,你没法知道你是想 a= '1' 还是 a= 1(a='1'是插入值1,a=1是插入enum的第一个值,尤其php弱类型的,如果int的,很少有人在sql里加双引号。),这是PHP和mysql 在使用enum 最大的问题。所以。。安心点啦。干脆点直接tinyin

6. java中的枚举定义中的枚举常量后面如果没有括号初始化,而枚举常量又是对象实例,那从对象实例角度来说,

没写定值,就按顺序从头到尾递增

7. 请大神指点:应用程序端该如何处理枚举类型的数据,百分悬赏!

1、可以从数据库中读取,但最好是写成配置文件的形式。2、如果写成配置文件的话,你判断的时候可以从配置文件中读取,以序号的形式,可以使你不用修改程序,只修改配置文件的方式达到目的。3、从这一点看,我强烈建议你用配置文件的方式,程序中读取配置文件来解决问题。

8. mysql中enum类型怎么设置

根据用户定义的枚举值与分片节点映射文件,直接定位目标分片。

用户在rule.xml中配置枚举值文件路径和分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表

在DBLE的运行过程中,用户访问使用这个算法的表时,WHERE子句中的分片索引值会被提取出来,直接查映射表得到分片编号

与MyCat的类似分片算法对比

中间件

DBLE

MyCat

分片算法种类 enum 分区算法 分片枚举

两种中间件的枚举分片算法使用上无差别。

开发注意点

【分片索引】1. 整型数字(可以为负数)或字符串((不含=和换行符)

【分片索引】2. 枚举值之间不能重复

Male=0Male=1

或者

123=1123=2

会导致分片策略加载出错

【分片索引】3. 不同枚举值可以映射到同一个分片上

Mr=0Mrs=1Miss=1Ms=1123=0

运维注意点

【扩容】1. 增加枚举值无需数据再平衡

【扩容】2. 增加一个枚举值的分片数量数时,需要对局部数据进行迁移

【缩容】1. 减少枚举值需要数据再平衡

【缩容】2. 减少一个枚举值的分片数量数时,需要对局部数据进行迁移

配置注意点

【配置项】1. 在 rule.xml 中,可配置项为<property name="defaultNode"> 、<property name="mapFile"> 和 <property name="type">

【配置项】2. 在 rule.xml 中配置<property name="defaultNode">标签,非必须配置项,不配置该项的话,用户的分片索引值没落在 mapFile 定义的范围时,DBLE 会报错;若需要配置,必须为非负整数,用户的分片索引值没落在 mapFile 定义的范围时,DBLE 会路由至这个值的 MySQL 分片

【配置项】3. 在 rule.xml 中配置 <property name="mapFile">标签,范围映射文件的路径:若在映射文件在 DBLE_HOME/conf 或其中,则可以使用相对路径的形式配置,例如,映射文件是 DBLE_HOME/conf/map/table_map.txt 时,配置值就可以简写为 map/table_map.txt;映射文件在 DBLE_HOME/conf 目录以外时,需要使用绝对路径,但这种做法需要考虑用户权限等问题,因此不建议把映射文件放在 DBLE_HOME/conf 外。

【配置项】4. 编辑 mapFile 所配置的文件

记录格式为:<枚举值>=<分片编号>

枚举值可以是整型数字,或任意字符(除了=和换行符),分片编号必须是非负整型数字,记录之间以换行分隔,一行仅能有一条记录,枚举值不能够是“DEFAULT_NODE”这个字符串,允许以“//”和“#”在行首来注释该行

【配置项】5. 在 rule.xml 中配置 <property name="type">标签;type 必须为整型;取值为 0 时,mapFile 的<枚举值>必须为整型;取值为非 0 时,mapFile 的<枚举值>可以是任意字符(除了=和换行符)

9. 如何在构造函数中初始化枚举类型的成员

#include using namespace std; class A { int a,b; public: A(); void print(); }; A::A():a(1),b(2){} //该构造函数直接用初始表列表在类中显式地赋值了 void A::print(){ cout

10. java,求高手讲解一下一个枚举的例子

结果:Mr. John Doe转的。枚举是一个特殊的类。枚举类型是JDK5.0的新特征 。Sun引进了一个全新的关键字enum来定义一个枚举类 。下面就是一个典型枚举类型的定义:Java代码: public enum Color{ RED,BLUE,BLACK,YELLOW,GREEN } 显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类 。 而这些类都是类库中Enum类的子类(java.lang.Enum) 。它们继承了这个Enum中的许多有用的方法 。我们对代码编译之后发现,编译器将enum类型单独编译成了一个字节码文件:Color.class 。Color字节码代码 final enum hr.test.Color { // 所有的枚举值都是类静态常量 public static final enum hr.test.Color RED; public static final enum hr.test.Color BLUE; public static final enum hr.test.Color BLACK; public static final enum hr.test.Color YELLOW; public static final enum hr.test.Color GREEN; private static final synthetic hr.test.Color〔〕 ENUM$VALUES; // 初始化过程,对枚举类的所有枚举值对象进行第一次初始化 static { 0 new hr.test.Color 〔1〕 3 p 4 ldc 〔16〕 //把枚举值字符串“RED”压入操作数栈 6 iconst_0 // 把整型值0压入操作数栈 7 invokespecial hr.test.Color(java.lang.String, int) 〔17〕 //调用Color类的私有构造器创建Color对象RED 10 putstatic hr.test.Color.RED : hr.test.Color 〔21〕 //将枚举对象赋给Color的静态常量RED 。 。.. 。.. 。.. 枚举对象BLUE等与上同 102 return }; // 私有构造器,外部不可能动态创建一个枚举类对象(也就是不可能动态创建一个枚举值) 。 private Color(java.lang.String arg0, int arg1){ // 调用父类Enum的受保护构造器创建一个枚举对象 3 invokespecial java.lang.Enum(java.lang.String, int) 〔38〕 }; public static hr.test.Color〔〕 values(); // 实现Enum类的抽象方法 public static hr.test.Color valueOf(java.lang.String arg0); } 下面我们就详细介绍enum定义的枚举类的特征及其用法 。(后面均用Color举例)1、Color枚举类就是class,而且是一个不可以被继承的final类 。其枚举值(RED,BLUE. 。.)都是Color类型的类静态常量, 我们可以通过下面的方式来得到Color枚举类的一个实例: Color c=Color.RED; 注意:这些枚举值都是public static final的,也就是我们经常所定义的常量方式,因此枚举类中的枚举值最好全部大写 。2、即然枚举类是class,当然在枚举类型中有构造器,方法和数据域 。但是,枚举类的构造器有很大的不同:(1) 构造器只是在构造枚举值的时候被调用 。Java代码: enum Color{ RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0); //构造枚举值,比如RED(255,0,0) private Color(int rv,int gv,int bv){ this.redValue=rv; this.greenValue=gv; this.blueValue=bv; } public String toString(){ //覆盖了父类Enum的toString() return super.toString()+“(”+redValue+“,”+greenValue+“,”+blueValue+“)”; } private int redValue; //自定义数据域,private为了封装 。 private int greenValue; private int blueValue; } (2) 构造器只能私有private,绝对不允许有public构造器 。 这样可以保证外部代码无法新构造枚举类的实例 。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已 。 但枚举类的方法和数据域可以允许外部访问 。Java代码: public static void main(String args〔〕) { // Color colors=new Color(100,200,300); //wrong Color color=Color.RED; System.out.println(color); // 调用了toString()方法 } 3、所有枚举类都继承了Enum的方法,下面我们详细介绍这些方法 。(1) ordinal()方法: 返回枚举值在枚举类种的顺序 。这个顺序根据枚举值声明的顺序而定 。 Color.RED.ordinal(); //返回结果:0 Color.BLUE.ordinal(); //返回结果:1 (2) compareTo()方法: Enum实现了java.lang.Comparable接口,因此可以比较象与指定对象的顺序 。Enum中的compareTo返回的是两个枚举值的顺序之差 。当然,前提是两个枚举值必须属于同一个枚举类,否则会抛出ClassCastException()异常 。(具体可见源代码) Color.RED.compareTo(Color.BLUE); //返回结果 -1 (3) values()方法: 静态方法,返回一个包含全部枚举值的数组 。 Color〔〕 colors=Color.values(); for(Color c:colors){ System.out.print(c+“,”); }//返回结果:RED,BLUE,BLACK YELLOW,GREEN, (4) toString()方法: 返回枚举常量的名称 。 Color c=Color.RED; System.out.println(c);//返回结果: RED (5) valueOf()方法: 这个方法和toString方法是相对应的,返回带指定名称的指定枚举类型的枚举常量 。 Color.valueOf(“BLUE”); //返回结果: Color.BLUE (6) equals()方法: 比较两个枚举类对象的引用 。Java代码: //JDK源代码: public final boolean equals(Object other) { return this==other; } 4、枚举类可以在switch语句中使用 。Java代码: Color color=Color.RED; switch(color){ case RED: System.out.println(“it‘s red”);break; case BLUE: System.out.println(“it’s blue”);break; case BLACK: System.out.println(“it‘s blue”);break; }


赞 (0)