Java枚举与数值的定义
Java枚举与数值的定义
我对Java还不熟悉,但我有一些.Net编程经验。我想知道Java是否有类似于.Net的枚举?以下是一个示例。我知道Java有枚举,但不能为其赋值。\n在.Net中,我可以创建带有值的枚举。在代码中使用时,我无需注释或者在编写新程序时记住0、1、2和3的含义。我还可以将枚举用作构造函数的参数类型,然后将AccessType.Full作为参数传递进去。\n在Android Studio中如何复制这个功能呢?\n
public class Delete { private enum AccessType { Full = 0, ReadOnly = 1, Delete = 2, Add = 3 } private void DeleteItem(String sItem) { if (User.Access == AccessType.Delete || User.Access == AccessType.Full) { //在此处删除某些内容 } else { MsgBox("您没有删除这些项目的权限。", vbInformation); } } }
\n在Android Studio中,我有以下if{}块代码。\n
if (AllLists.get(pos).Access == 0) { MsgText += getResources().getString(R.string.info_cat_shared_no) + "\n"; } else if (AllLists.get(pos).Access == 1){ MsgText += getResources().getString(R.string.info_cat_shared_edit) + "\n"; } else if (AllLists.get(pos).Access == 2){ MsgText += getResources().getString(R.string.info_cat_shared_no_edit) + "\n"; }
\n将代码转换为下面的方式,我就不必总是检查0、1、2和3代表什么了。我查了一下Java的枚举,它们只是一系列字符串,对于这个问题不起作用,至少在我能想到的实现方式中是这样的。 \n
if (AllLists.get(pos).Access == AccessType.Full) { MsgText += getResources().getString(R.string.info_cat_shared_no) + "\n"; } else if (AllLists.get(pos).Access == AccessType.ReadOnly){ MsgText += getResources().getString(R.string.info_cat_shared_edit) + "\n"; } else if (AllLists.get(pos).Access == AccessType.Delete){ MsgText += getResources().getString(R.string.info_cat_shared_no_edit) + "\n"; }
Java枚举类型(Enum)是一种特殊的数据类型,它可以定义一组具有相同类型的常量。在Java中,枚举类型通常用于表示一组相关的常量,例如星期几、颜色等等。在使用枚举类型时,有时会遇到需要为枚举常量指定数值的情况。
然而,在Java中,枚举类型默认是没有数值的。如果我们想为枚举常量指定数值,可以使用带有参数的构造函数来实现。例如,我们可以定义一个名为`AccessType`的枚举类型,并为每个枚举常量指定一个数值。
在上述代码中,我们可以看到`AccessType`枚举类型定义了四个枚举常量:`Full`、`ReadOnly`、`Delete`和`Add`。每个枚举常量都有一个类型(type)作为参数传入构造函数,并在构造函数中进行赋值。
然而,有人认为使用构造函数来为枚举常量指定数值是不必要的,可以通过使用`switch`语句来实现相同的效果。在上述代码中,我们可以看到使用`switch`语句根据枚举常量的值执行相应的操作。
根据以上内容,我们可以总结出Java枚举类型带有数值的问题是因为默认情况下枚举类型是没有数值的。解决这个问题的方法是通过使用带有参数的构造函数为枚举常量指定数值,或者使用`switch`语句根据枚举常量的值执行相应的操作。
以上就是关于Java枚举类型带有数值的问题以及解决方法的整理。通过为枚举常量指定数值,我们可以更方便地对枚举常量进行比较和操作。
Java枚举是非常方便的对象。您甚至可以添加属性和方法。要分配属性,只需将值作为参数添加到构造函数中即可。但是,一些示例中并没有展示如何像这样添加值。它们只是一些表示星期几或颜色等只有字符串的示例,这令人沮丧。
问题出现的原因是,部分Java枚举示例没有展示如何为枚举值分配数值。这对于一些需要数值表示的枚举类型,如访问类型(AccessType),是不够实用的。
要解决这个问题,可以通过在枚举类型中添加一个私有的整型属性来表示数值,并在构造函数中为该属性赋值。同时,通过添加一个公共的方法来获取该属性的值。这样,在使用枚举类型时,我们可以直接获取枚举值对应的数值。
以下是一个示例代码:
public enum AccessType { Full(0), ReadOnly(1), Delete(2), Add(3); private final int code; AccessType(int code) { this.code = code; } public int getCode() { return this.code; } }
在这个示例中,我们定义了一个名为AccessType的枚举类型,它包含了四个枚举值:Full、ReadOnly、Delete和Add。每个枚举值都有一个对应的数值,分别是0、1、2和3。
通过在构造函数中为每个枚举值的code属性赋值,并提供一个公共的getCode()方法来获取该属性的值,我们可以轻松地在使用这些枚举值时获取它们的数值。
这样,我们就可以方便地使用带有数值的Java枚举了。无论是在比较、存储还是传递枚举值时,我们都可以直接使用它们的数值,而不需要额外的转换或处理。
通过这种方式,我们可以更好地利用Java枚举的优势,使其在表示具有数值属性的数据时更加方便和实用。