Android 枚举的使用

枚举类型在Android应用
本文探讨了枚举类型的使用及其在Android应用开发中的优缺点。通过实例展示了如何获取枚举对象的名称、序数等属性,提高了代码的可读性和可维护性,但也指出其可能导致的内存占用问题。

这篇例子可以获取到枚举对象名称,枚举类,枚举的序数等属性,在使用枚举的时候会增加程序的可读性,增加代码可维护性,并且不容易导致程序错误

优点:枚举是限定有限可能值的一种手段,使用枚举可以降低程序出错的几率,并可以提高代码的可读性与可维护性
 

缺点:Android官方不建议使用enums,占用内存多Android中当你的App启动后系统会给App单独分配一块内存。App的DEX code、Heap以及运行时的内存分配都会在这块内存中。使用枚举Enums,DEX size内存增加是直接定义静态变量的13倍

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
 
public class MainActivity extends AppCompatActivity {
    Button button;
 
    //声明枚举的类型
    public enum MyColor{
        RED,
        BLUE,
        GREEN
    }
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getColor();
            }
        });
    }
 
    private void getColor() {
        MyColor color0 = MyColor.RED;
        switch (color0){
            case RED:
                Log.e("TAG","红色");
                break;
            case BLUE:
                Log.e("TAG","蓝色");
                break;
            case GREEN:
                Log.e("TAG","绿色");
                break;
            default:
                Log.e("TAG","未知色");
                break;
        }
        for (MyColor myColor : MyColor.values()){
            Log.e("TAG","枚举对象--"+myColor);
            Log.e("TAG","枚举对象的序数--"+myColor.ordinal());
            Log.e("TAG","枚举对象的字符串--"+myColor.name());
            Log.e("TAG","枚举类--"+myColor.getDeclaringClass());
 
        }
    }
}

 

### Android 枚举类型赋值示例 在 Android 开发中,枚举类型的赋值与 Java 中的枚举类型赋值方式相同。以下是一个完整的示例代码,展示如何定义和赋值一个枚举类型。 #### 定义枚举类型 首先,定义一个枚举类型 `Color`,包含多个颜色值。 ```java public enum Color { RED, GREEN, BLUE } ``` #### 枚举赋值 可以通过直接赋值的方式为变量分配一个枚举值。 ```java Color selectedColor = Color.RED; // 直接赋值为枚举常量 ``` 如果需要从字符串转换为枚举值,可以使用 `valueOf` 方法[^2]。例如: ```java String colorName = "GREEN"; try { Color selectedColor = Color.valueOf(colorName); // 将字符串转换为枚举值 } catch (IllegalArgumentException e) { // 处理非法参数异常 System.out.println("无效的颜色名称: " + colorName); } ``` #### 遍历枚举值 如果需要遍历所有枚举值,可以使用 `values` 方法[^2]。 ```java for (Color color : Color.values()) { // 遍历所有枚举值 System.out.println(color.toString()); // 输出每个枚举值的名称 } ``` #### 性能优化 在 Android 开发中,频繁使用枚举可能会导致性能问题,特别是在需要大量装箱操作的情况下[^3]。为了优化性能,可以考虑使用 `SparseIntMap` 或其他类似的数据结构替代枚举。然而,对于少量的枚举值,这种影响通常可以忽略不计。 #### 注意事项 - 枚举类型的名称必须与定义时一致,否则调用 `valueOf` 时会抛出 `IllegalArgumentException` 异常。 - 如果需要自定义行为,可以在枚举中添加构造函数、字段和方法。 ### 示例完整代码 以下是一个完整的代码示例,展示如何定义、赋值和使用枚举类型。 ```java public class EnumExample { public enum Color { RED, GREEN, BLUE } public static void main(String[] args) { // 直接赋值 Color selectedColor = Color.RED; // 从字符串转换为枚举值 String colorName = "GREEN"; try { Color convertedColor = Color.valueOf(colorName); System.out.println("转换后的颜色: " + convertedColor.toString()); } catch (IllegalArgumentException e) { System.out.println("无效的颜色名称: " + colorName); } // 遍历所有枚举值 for (Color color : Color.values()) { System.out.println("枚举值: " + color.toString()); } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值