6、使用enum来替代常量

如果没有枚举类,我们可能需要写很多的静态变量,例如:

public static int APPLE = 1;
public static int GRAPE = 2;

枚举类写法

enum Fruit{
    APPLE(0),
    GRAPE(1);
    private int type;

    private Fruit(int type) {
        this.type = type;
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }

}

枚举类提供了很多方法,用于遍历,取值...等,同时由于枚举的机制,会有例如编译检查这样安全的用法。

时间: 2024-12-10 12:34:35

6、使用enum来替代常量的相关文章

【代码优化】使用enum代替int常量

经常带代码中看见这样的代码: public static final int APP_START=1; public static final int APP_PAUSE=0; public static final int APP_STOP =2; public static final int PLAY_START=1; public static final int PLAY_PAUSE=0; public static final int PLAY_STOP =2; 这种方法叫作int枚

尽量多的以 const/enum/inline 替代 #define

前言 在面向过程语言,如 C 语言中,#define 非常常见,也确实好用,值得提倡.但在如今面向对象的语言,如 C++ 语言中,#define 就要尽量少用了. 为何在 C++ 中就要少用了呢? 这是因为 #define 机制只是简单的字符替换,这样一方面你无法对 #define 定义的东西加入一些C++语法元素,因此限制了面向对象编程语言的威力: 另一方面编译器不能获取到你所定义的变量类型/函数类型,因此无法提供全面的检测机制,导致隐藏 bug 增多. 所以要想出对 #define 机制进行

第一篇:尽量多的以 const/enum/inline 替代 #define

前言 在面向过程语言,如 C 语言中,#define 非常常见,也确实好用,值得提倡.但在如今面向对象的语言,如 C++ 语言中,#define 就要尽量少用了. 为何在 C++ 中就要少用了呢? 这是因为 #define 机制只是简单的字符替换,这样一方面你无法对 #define 定义的东西加入一些C++语法元素,因此限制了面向对象编程语言的威力: 另一方面编译器不能获取到你所定义的变量类型/函数类型,因此无法提供全面的检测机制,导致隐藏 bug 增多. 所以要想出对 #define 机制进行

Item 30 用enum代替int常量类型枚举,string常量类型枚举

1.用枚举类型替代int枚举类型和string枚举类型 public class Show { // Int枚举类型 // public static final int APPLE_FUJI = 0; // public static final int APPLE_PIPPIN = 1; // public static final int APPLE_GRANNY_SMITH = 2; public enum Apple { FUJI, PIPPIN, GRANNY_SMITH } pub

第30条:用enum代替int常量

在java1.5之前,表示枚举类型的常用模式是声明一组具名的int常量,每个类型成员一个常量: public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final int ORANGE_NAVEL = 0; public static final int ORANGE

第六章:枚举和注解。ITEM30:用enum代替int常量。&ITEM32:用EnumSet代替位域。&ITEM33:用EnumMap代替序数索引。

1 package com.twoslow.cha6; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public enum Operation { 7 8 PLUS("+") { 9 @Override 10 double apply(double x, double y) { 11 return x + y; 12 } 13 },MINUS("-") { 14 @Override 15 dou

EC笔记,第一部分:2.尽量以const,enum,inline代替#define

02.尽量以const,enum,inline代替#define 原因:编译前的预处理会替换宏,所以调试的时候找不到错误 1.const 尽量用const替代常量宏定义 两种特殊情况: (1).常量指针 通常定义为const char * const cstr="hello world"; 即要把指针本身定义为const,而不仅仅是指针指向的值,通常用string替代char*-based: const string str("hello world"); (2).

内联&const&enum&宏

[热点考题-扩展学习] 内联&const&enum&宏 [C++可以使用技术去替代宏] C++的内联是对C函数宏的一种改进,const替代常量宏. 对于函数宏C++提供了inline替代.尽量以const.enum,inline替代宏.--<effective c++>条款2 宏的优点: 增强代码的复用性和可维护性. 提高性能. 宏也有很多缺点: 不方便调试宏.(因为预编译阶段进行了替换) 导致代码可读性差,可维护性差. 容易误用. 没有类型安全检查 内联&co

C++的Enum hack(转)

转自:http://www.cnblogs.com/jiqingwu/p/cpp_enum_hack.html 从一个例子开始吧: class Game { private: static const int GameTurn = 10; int scores[GameTurn]; }; 对于支持类内初始化的C++编译器,这段代码可以编译通过. 但是较老的C++编译器,可能不支持类内初始化,这样我们的静态常量,必须要在类外初始化.如下: class Game { private: static