- 浏览: 748149 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (419)
- 杂软粉墨 (2)
- 创意灵感 (3)
- 经验记录 (137)
- 开源轨迹 (2)
- sip-communicator (2)
- 闲侃杂谈 (8)
- 问题交流 (24)
- 概念模式 (32)
- 难点备案 (5)
- JwChat (1)
- 中国象棋 (1)
- 教育探索 (6)
- 英语研究 (58)
- 星际争霸 (1)
- 电信知识 (1)
- 软件架构 (3)
- 哲学探索 (26)
- 算法灵魂 (8)
- 近视探索 (6)
- 数学数学 (3)
- 牛角钻尖 (23)
- 至强文言 (3)
- 数据结构 (1)
- 宇宙物理 (2)
- 网络架构 (3)
- 游戏领域 (4)
- 图形处理 (2)
- 修炼之路 (8)
- 读书天地 (20)
- 编解乱码 (2)
- 概念探索 (8)
- 格物致知 (1)
- 其它语言 (1)
- 测试领域 (3)
- 文化风流 (1)
- JQuery (1)
- 網頁領域 (1)
- Unix/Linux (1)
- Inside JVM (1)
- 异常分析 (1)
最新评论
-
suyujie:
引用
HTML <a> 标签灰显禁用 -
suyujie:
HTML <a> 标签灰显禁用 -
suyujie:
HTML <a> 标签灰显禁用 -
suyujie:
HTML <a> 标签灰显禁用 -
iamzhoug37:
您能说一下"局部变量不受文本顺序限制" 是 ...
声明前为什么能赋值却不能输出,都是使用
静态常量是枚举模式的应用
它有很多缺点:类型不安全(静态常量可以随意增加使用或操作),无命名空间,脆弱(某常量值改变后客户端如果不编译仍能使用,但表现却是未定义的),静态常量打印值为数字,也不具提示性等等
客户端未编译有待推敲?
This pattern has many problems, such as:
-
Not typesafe
- Since a season is just an
int
you can pass in any other int value where a season is required, or add two seasons together (which makes no sense). -
No namespace
- You must prefix constants of an int enum
with a string (in this case
SEASON_
) to avoid collisions with other int enum types. - Brittleness - Because int enums are compile-time constants, they are compiled into clients that use them. If a new constant is added between two existing constants or the order is changed, clients must be recompiled. If they are not, they will still run, but their behavior will be undefined.
- Printed values are uninformative - Because they are just ints, if you print one out all you get is a number, which tells you nothing about what it represents, or even what type it is.
脆弱性的理解在这里比如是静态常量,修改了,插入或者增加,客户端必须得重新编译来适应新的变化,而枚举的话则不必,比如它可以通过遍历来囊括所有新的变化,客户端代码可以不用改变,这就是用静态常量脆弱性的体现。
发表评论
-
关于方法访问控制符protected
2012-11-29 10:38 1268http://bbs.csdn.net/topics/3902 ... -
一个基本问题关于引用的
2012-05-15 10:20 1130问: int a = 1; Integer b = new ... -
我對面向對象和過程的理解。
2012-05-02 08:30 1068我的一些理解。 面向过程,是对客观现象的描述,感觉是有一个上 ... -
stack and heap
2012-01-13 23:17 1054我觉得是根据应用方式 和本身特性 才将内存分区的,目的是提 ... -
program experience conclusion
2011-07-11 15:35 10671. check parameters for validit ... -
PreparedStatement's possible designated parameter
2011-04-29 13:45 991though it's nearly impossible t ... -
clean Log4j
2011-04-12 11:19 1068import org.apache.log4j.BasicCo ... -
about abstract class
2011-04-02 10:34 871yes, we do know abstract class ... -
cvs operations on linux
2011-03-25 09:40 1016http://www.linuxhowtos.org/Syst ... -
regex to exchange two parts
2011-03-24 17:09 1096public class Test { public ... -
About the database locking
2011-03-09 11:02 967http://en.wikipedia.org/wiki/Lo ... -
how to send soap message in java
2011-03-08 10:29 1898import java.io.BufferedReader; ... -
About ShutDownDemo
2011-03-07 15:02 985public class ShutdownDemo { p ... -
How do you know if an explicit object casting is needed
2011-02-24 16:33 1192通俗来讲,不可能将一只是猫的动物强转为狗 再说Graphic ... -
有关MimeUtility
2011-02-24 13:11 3368import java.io.UnsupportedEncod ... -
C#连接sql server 2008的一件2事
2011-02-24 09:01 2157once upon a time, i came upon o ... -
Shadowing, Overriding, Hiding and Obscuring
2011-02-22 15:15 1167当子类属性与父类属性重叠时 这种叫法上是shadowi ... -
JAXP usage
2011-02-16 16:07 1103import java.io.ByteArrayInputSt ... -
运行一个类,如果classpath中路径带空格就加双引号
2011-02-11 11:25 2810注意是这样加: java -cp .;"d:\my ... -
关于ClassPath中的current directory
2011-01-28 16:40 1155Given: 1. package com.company. ...
相关推荐
- **类型安全**:PHP不强制类常量的值必须与声明时一致,因此可以为枚举类添加任何类型的常量。 - **枚举值的比较**:比较枚举值时,需要使用全等运算符(`===`),而不是相等运算符(`==`),以确保值和类型都匹配...
标题中的"C枚举常量转换易语言源码"指的是一个编程相关的资源,它涉及到两种不同的编程语言:C语言和易语言。C语言是一种底层、静态类型的编程语言,而易语言则是一种面向对象、中文编程的高级语言,设计目标是使...
Java枚举实际上是单例的,所有枚举实例都是通过静态常量直接创建并初始化的。在反编译后的代码中可以看到,每个枚举常量在静态初始化块中被创建,如`EAST = new Direction("EAST", 0, "\u4E1C")`。 3. 枚举的继承与...
3. 静态常量:枚举常量在内存中只存在一次,保证了值的安全性。 4. 自动序列化:枚举类型自动支持Java的序列化机制。 三、枚举的方法 1. `values()`:返回枚举类型的全部常量数组,常用于遍历枚举。 2. `valueOf...
从Java 1.5版本开始引入,枚举提供了一种更安全、更规范的方式来表示有限的固定值集合,相比传统的使用静态常量的方式,枚举在功能和灵活性上有了显著的提升。 在1.5之前,为了模拟枚举的效果,开发者通常会创建一...
3. 枚举值本质上是静态常量,定义的枚举值会被默认修饰为 public static final。 4. 枚举提供了一些基本方法,如 values()、name()、ordinal()、getDeclaringClass()、equals() 等。 枚举的方法: 1. values():...
此外,枚举还支持常量的自然排序,可以实现`Comparable`接口自定义比较规则,也可以通过`enum`类实现`Comparator`接口来定义比较逻辑。枚举还可以拥有构造函数、方法以及静态变量和方法,使得枚举类型更加灵活,能够...
在上述例子中,`Color`枚举定义了一个静态方法`getName(int index)`,根据索引返回对应的颜色名称,以及`get`和`set`方法来访问和修改成员变量。注意,自定义方法需在枚举实例序列之后定义,并以分号结束。 4. 覆盖...
7. 枚举的常量与静态字段 枚举类中的字段默认是静态的,因此可以在不创建枚举实例的情况下访问它们。这意味着,枚举常量可以直接通过枚举类型名访问,如`Color.RED`。 8. 枚举的比较 枚举实例之间的比较可以使用`...
首先,枚举类型在本质上等同于定义了一组静态常量。创建枚举类型的语法如下: ```java public enum Belle { para1, para2, para3, para4; } ``` 这会创建一个名为`Belle`的枚举类,其中包含四个静态常量`para1`, ...
在Java编程语言中,枚举(Enum)是一种特殊的类,用于定义一组固定的常量集合。枚举在很多场景下都十分有用,例如表示状态、角色、颜色等有限且不变的值。本篇将深入探讨如何使用Java枚举,并遵循规范进行方法命名。...
在早期的Java版本中,没有枚举类型,开发者通常会使用静态常量来模拟枚举的功能。例如: ```java public class Color { public static final Color RED = new Color(); public static final Color GREEN = new ...
这种方法创建的枚举更加面向对象,常量作为类的静态属性。 ### 使用枚举简化if...else 在处理条件判断时,通常我们会使用if...else或switch语句。以下是一个使用if...else的经典例子: ```javascript function ...
- **方法**: 枚举类型可以有方法,这使得它们不仅仅是一组静态值,还可以包含行为逻辑。 - **构造函数**: 枚举也可以有自己的构造函数,但是必须是私有的。 #### 三、枚举类型的优势 使用Java枚举类型相比传统的`...
相较于简单的常量定义或类的静态常量实例,枚举具有以下优势: 1. **类型安全**:枚举类型的实例只能是预定义的,无法通过 new 关键字创建额外的实例,这避免了可能出现的类型错误。 2. **自动实现 Comparable 和 ...
Java手动方式创建枚举类是一种常见的编程方法,在Java中可以使用枚举类型来定义一组具有相同特征的常量。通过手动方式创建枚举类,可以更好地控制枚举类型的行为和特性。在本文中,我们将通过一个实例来介绍Java手动...
compareTo() 方法是枚举类中的一个实例方法,它用于比较两个枚举元素的顺序。 9. name() 方法 name() 方法是枚举类中的一个实例方法,它返回元素实例的变量名,该方法为 final 不可覆盖的。 10. 枚举类的应用 ...
- **常量定义**:在Java 5之前,通常使用静态常量来模拟枚举,如描述中所示。 - **单例类**:通过创建只包含静态成员的类,可以实现类似枚举的行为,但缺乏内置的枚举特性。 Java的枚举类型不仅提供了类型安全,还...
枚举的静态性质确保了状态的不可变性,抽象方法提供了行为的定义,而内部的转换方法则控制了状态的变化。这种模式在处理需要根据状态进行不同操作的场景时特别有用,例如处理工作流、网络连接状态或者游戏状态等。
5. 枚举集与枚举常量: Java枚举可以实现接口,也可以拥有字段和方法,因此可以用来创建复杂的枚举集。例如,可以定义一个表示星期几的枚举,并为每个枚举值添加额外的属性或行为: ```java public enum DayOfWeek...