android 接口定义常量,Android开发笔记(5):常量的合理使用

今天,我们来聊一些“细枝末节”的问题——java中的常量。觉得很有意思,给大家分享一下:

下面是我见过的几种常量定义操作:

1.普通款:

public class Constants {

private Constants(){}

public static final int MAX = Integer.MAX_VALU;//最大值

public static final int MIN = Integer.MIN_VALU;//最小值

}

最简单的一种,需要定义成final且定义一个private的构造方法,这样做是为了不让其他类继承,禁止实例化此类,调用时直接以"类.常量"的方式调用。

当然,大部分时候,我们都放在相关的类里,而不是单独抽取出来。

2.接口

public interface Constants {

int MAX = Integer.MAX_VALUE;//最大值

int MIN = Integer.MIN_VALU;//最小值

}

接口中定义,接口中的"变量"默认都是 "public static final"类型,即为常量,因此接口可以省略。

3.枚举款(这个详细说一下)

假设服务端下发了一个“tag”字段,1代表通过,2代表不通过,3代表延期审核。枚举可以这样用:

public enum Constants {

PASS(1),NOPASS(2),DELAY(3);

private final int state;

Constants(int state){

this.state = state;

}

public int getstate() {

return state;

}

}

//使用

...

if (getUserState() == Constants.PASS.getstate()) {

//此人审核未通过

}

他的优点有啥呢?

(1)枚举常量更简单

枚举只需要定义每个枚举项,不需要定义枚举值。

(2)枚举常量属于稳态型

以上面的代码举例:得到数据以后getUserState(),普通常量,你需要判断边界值,比如获取的值为-1就会出现很多问题。而枚举只能是其中一个实例。

(3)扩展性强

有一天产品告诉你,现在需要根据状态相应颜色,分别是“红色”、“蓝色”、“白色”。

那么只要稍微改一下代码就完事了。

public enum Constants {

PASS(1,Colors.red),NOPASS(2,Colors.buld),DELAY(3,,Colors.red);

private final int state;

private final int color;

Constants(int state,int color){

this.state = state;

this.color =cor

}

public int getcolor() {

return color;

}

}

方法实现接口,demo(@Contract.Type int action) 用注解标明方法使用常量,增加了常量与方法的关联感

(4)注解款

@IntDef({SELECT_ACHIEVEMENT, SELECT_TASK, SELECT_MEMBER, SELECT_BUY})

@Retention(RetentionPolicy.SOURCE)

@interface SelectBuyType {

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql数据库操作手册

1 存储过程的写法 以下是一个带有入参的存储过程模板, #删除方案-存储过程 CREATE PROCEDURE procPersonAppointRecallPlanByPlanUuidDelete(in planUuid varchar(48)) BEGIN update PERSON_APPOINT_RECALL_DUTY set duty_status 2 WHERE duty_list_uuid in (sel…

如何写 go 代码 (How to Write Go Code 翻译)

目录 1. 写在前面的话2. 介绍3. 代码组织 3.1. 工作区3.2. GOPATH 环境变量3.3. Package 路径3.4. 第一个 GO 程序3.5. 第一个 GO 库3.6. Package name4. 测试5. 远程 package6. 下一步7. 获取帮助写在前面的话 本文为Go官方网站 How to Write Go Code 这篇文章的翻译, 水平有限…

Servlet规范定义的Servlet 生命周期

Servlet有良好的生存期的定义,包括如何加载、实例化、初始化、处理客户端请求以及如何被移除。这个生存期由javax.servlet.servlet接口的init,service和destroy方法表达。1、加载和实例化 容器负责加载和实例化一个Servlet。实例化和加载可以发生在引擎启动的时候&…

android auto 源代码,最近心血来潮,把Androidautosize的源码搂了一眼

https://codechina.csdn.net/mirrors/jessyancoding/androidautosize?utm_sourcecsdn_github_accelerator以上是Androidautosize的源码,有兴趣的就去下下来搂一眼我这边还没看完,就把最基础的看了一下,然后顺了下简单的流程,顺便…

11次作业

1、实验要求&#xff1a;建立一个通信录&#xff0c;通信录的结构体记录包括&#xff1a;姓名、生日、电话号码&#xff1b;其中生日又包括三项&#xff1a;年、月、日。编写程序&#xff0c;定义一个嵌套的结构类型&#xff0c;输入n&#xff08;n<10&#xff09;个联系人的…

Lucene.net 下载地址

Lucene.net 官方网站 http://lucene.apache.org/lucene.net/ Lucene.net 2.9.2 下载地址 Lucene.Net_2_9_2/ 转载于:https://www.cnblogs.com/leco/archive/2010/12/22/1913806.html

android内存卡测试,安卓sd卡真假检测工具_内存卡检测扩容卡软件_sd insight

内存卡检测扩容卡软件内存卡检测扩容卡软件由于U盘、TF卡&#xff0c;sd内存卡等移动存储设备越来越便宜&#xff0c;导致很在某宝上买到便宜且容量大的U盘或者内存卡&#xff0c;结果基本上都是扩容盘&#xff0c;所谓扩容盘&#xff0c;就是实际容量比如2G的U盘&#xff0c;经…

bashrcprofile

# /etc/bashrc# are we an interactive shell? 是交互式的shell吗&#xff1f;# System wide functions and aliases //系统功能和别名比如说&#xff1a;你设置个别名alias xixdate当你键入xix时&#xff0c;那么系统显示为命令date的信息。&#xff08;键入后才输出&#…

android ftp权限,实战android手机telnet、ftp登陆,权限修改

问题的提出&#xff1a;我用的手机是HTC magic&#xff0c;sd卡用的是金士顿的&#xff0c;不知道什么原因&#xff0c;总是有时能找到sd卡&#xff0c;有时找不到。我个人总有一些数据文件&#xff0c;想固定放在手机的系统上&#xff0c;而不是sd卡上(/sdcard)&#xff0c;那…

Linux nohup和的功效

Linux nohup和&的功效 https://www.cnblogs.com/laoyeye/p/9346330.html 这是我转载的文章&#xff0c;写的很好&#xff0c; nohup Command [ Arg ... ] [ & ] &&#xff1a;进程后台执行 不挂断地运行命令。no hangup的缩写&#xff0c;意即“不挂断” 例如&…

获取手机通讯录跟sim卡通讯录

/** 获取库Phone表字段 **/ private static final String[] PHONES_PROJECTION new String[] { Phone.DISPLAY_NAME, Phone.NUMBER }; private List<ContactsModel> contactsModels new ArrayList<ContactsModel>(); /** 得到手机通讯录联系人信息 **/ …

如何去掉ECShop 2.7.2中的Powered by ECShop字符

1.去掉标题上Powered by ECShop的字样如下: 在includes/lib_main.php找到lib_main.php文件,打开后,找到136行,将$page_title $GLOBALS[’_CFG’][’shop_title’] . ‘ – ‘ . ‘Powered by ECShop’ ;改为$page_title $GLOBALS[’_CFG’][’shop_title’] ;当然, . ‘ – ‘…

proguard android 配置,android – Proguard忽略库的配置文件

我现在面对一个非常奇怪的问题吗&#xff1f;我有一个具有两个模块的Gradle应用程序&#xff0c;一个主要模块和一个库模块。>在两个模块中&#xff0c;我已经声明了一个正确的proguard-rules.pro文件路径>在两个.gradle文件中我有minifyEnabled为true这是第一个问题&…

MySql Workbench 安全模式(safe mode)

默认情况下&#xff0c;MySql WorkBench 的安全模式是打开的&#xff0c;即&#xff1a;update、delete语句必须带 where 条件字句&#xff0c;单条记录更新或删除。 如果关闭安全模式&#xff08;safe mode&#xff09;&#xff1a; 菜单栏&#xff1a;编辑(Edit) ---> 个…

Hark的数据结构与算法练习之希尔排序

算法说明 希尔排序是插入排序的优化版。 插入排序的最坏时间复杂度是O(n2)&#xff0c;但如果要排序的数组是一个几乎有序的数列&#xff0c;那么会降低有效的减低时间复杂度。 希尔排序的目的就是通过一个increment&#xff08;增量&#xff09;来对数列分组进行交换排序&…

13 个超炫的 Conky 配置

Conky 是一款桌面美化及系统信息监控软件&#xff0c;有着很强的自定义性&#xff0c;如果你熟悉的话可以配置出各类不同效果的界面&#xff0c;而下面列出了 13 个超炫的 Conkey 配置&#xff0c;你可以尝试其中之一。 Bionic Conky&#xff1a; Hi-Tek Conky&#xff1a; Con…

android 播放声音 停止其他,Android AudioManager处理两个播放器同时有声音,停止其中一个播放的问题,暂停其他的播放...

尽管某个时刻只有一个activity可以运行&#xff0c;Android却是一个多任务环境&#xff0e;这对使用音频的应用带来了特殊的挑战&#xff0c;因为只有一个音频输出而可能多个媒体都想用它&#xff0e;在Android2.2之前&#xff0c;没有内建的机制来处理这个问题&#xff0c;所以…

数据仓库定义

数据仓库&#xff08;Data Warehouse&#xff09;是一个面向主题的&#xff08;Subject Oriented&#xff09;、集成的&#xff08;Integrated&#xff09;、相对稳定的&#xff08;Non-Volatile&#xff09;、反映历史变化&#xff08;Time Variant&#xff09;的数据集合&…

C# 操作 Word 修改word的高级属性中的自定义属性

为 Microsoft Word 创建自动化客户端 启动 Visual Studio .NET。在文件菜单上&#xff0c;单击新建&#xff0c;然后单击项目。从 Visual C# 项目类型中选择 Windows 应用程序。默认情况下会创建 Form1。添加对 Microsoft Word 对象库的引用。为此&#xff0c;请按照下列步骤操…