相关疑难解决方法(0)

Enum的values()方法的文档在哪里?

我宣布枚举为:

enum Sex {MALE,FEMALE};
Run Code Online (Sandbox Code Playgroud)

然后,迭代枚举,如下所示:

for(Sex v : Sex.values()){
    System.out.println(" values :"+ v);
}
Run Code Online (Sandbox Code Playgroud)

我检查了Java API但找不到values()方法?我很好奇这个方法来自哪里?

API链接:https: //docs.oracle.com/javase/8/docs/api/java/lang/Enum.html

java enums

168
推荐指数
3
解决办法
18万
查看次数

在java中以Enum方式将整数值存储为常量

我目前正在以下列方式创建整数常量.

public class Constants {
    public static int SIGN_CREATE=0;
    public static int SIGN_CREATE=1;
    public static int HOME_SCREEN=2;
    public static int REGISTER_SCREEN=3;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试以枚举方式执行此操作时

public enum PAGE{SIGN_CREATE,SIGN_CREATE,HOME_SCREEN,REGISTER_SCREEN}
Run Code Online (Sandbox Code Playgroud)

当我用PAGE.SIGN_CREATE它时应该返回1;

java enums constants

95
推荐指数
4
解决办法
12万
查看次数

如何匹配int到枚举

我从Android中的Native代码接收long或int形式的返回值,我想转换或与enum匹配,用于处理目的.可能吗 ?怎么样?

java enums android android-ndk

49
推荐指数
2
解决办法
4万
查看次数

Android架构组件:使用枚举

是否可以使用新的Android架构组件和房间持久性库将Enum类型用作Entity类中的嵌入字段?

我的实体(带有嵌入式枚举):

@Entity(tableName = "tasks")
public class Task extends SyncEntity {

    @PrimaryKey(autoGenerate = true)
    String taskId;

    String title;

    /** Status of the given task.
     * Enumerated Values: 0 (Active), 1 (Inactive), 2 (Completed)
     */
    @Embedded
    Status status;

    @TypeConverters(DateConverter.class)
    Date startDate;

    @TypeConverters(StatusConverter.class)
    public enum Status {
        ACTIVE(0),
        INACTIVE(1),
        COMPLETED(2);

        private int code;

        Status(int code) {
            this.code = code;
        }

        public int getCode() {
            return code;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的TypeConverter:

public class StatusConverter {

    @TypeConverter
    public static Task.Status toStatus(int status) {
        if …
Run Code Online (Sandbox Code Playgroud)

android android-room android-architecture-components

28
推荐指数
2
解决办法
2万
查看次数

使用Enum的序数值来索引Java中的数组是不好的做法吗?

我有两个阵列:墙和邻居.

public boolean[] walls = new boolean[4];
public Cell[] neighbors = new Cell[4];
Run Code Online (Sandbox Code Playgroud)

我有一个枚举:

enum Dir
{
    North,
    South,
    East,
    West
}
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够通过他们的方向访问墙壁或邻居,所以我不必传递一堆魔法索引.

但是,当我阅读Enum.ordinal()的文档时,它说程序员几乎没有使用这种方法,这让我认为它不应该以这种方式使用.

我在想做类似的事情:

    List<Dir> availableDirections = new ArrayList<Dir>();
    for(Dir direction : Dir.values())
        if (!Neighbors[direction.ordinal()].Visited)
            availableDirections.add(direction);
Run Code Online (Sandbox Code Playgroud)

甚至:

return Neighbors[Dir.North.ordinal()];
Run Code Online (Sandbox Code Playgroud)

我应该恢复使用设置为索引值的NORTH,SOUTH,EAST,WEST的静态常量还是使用Enum的序数方法?

java enums

19
推荐指数
3
解决办法
2万
查看次数

Java Enums的性能?

我正在实施一个2人游戏,它将在紧密的循环中运行数十万次,然后是性能至关重要.

我的代码实际上看起来像这样:

public class Table {
    private final int WHITE_PLAYER = +1;
    private final int BLACK_PLAYER = -1;

    private final int currentPlayer;
    private final int otherPlayer;

    ...
}
Run Code Online (Sandbox Code Playgroud)

我想知道如果我选择更换会有任何性能损失

private final int WHITE_PLAYER = +1;
private final int BLACK_PLAYER = -1;
Run Code Online (Sandbox Code Playgroud)

枚举定义为

public enum Players {
    WhitePlayer,
    BlackPlayer
}
Run Code Online (Sandbox Code Playgroud)

我认为枚举只是整数常量的语法糖,并且对于测试枚举生成的字节码以及调用它的代码进行釉面查看,似乎表明使用它们确实与制作静态相同方法调用,但是对于在首次运行时设置的某些枚举基础结构.

我的假设是,确实使用枚举作为静态常量是正确的还是我错过了什么?

java performance enums

18
推荐指数
3
解决办法
1万
查看次数

找到剩余的枚举

我有枚举 A、B、C。在一个方法中,我得到两个不同的枚举,并且必须返回剩余的枚举。

示例:我收到 A,CI 必须返回 B

我的解决方案是使用 if elseif else:

private EnumABC findRemaining(EnumABC pEnum1, EnumABC pEnum2){
    if((pEnum1 == EnumABC.A || pEnum2 == EnumABC.A) 
        && (pEnum1 == EnumABC.B || pEnum2 == EnumABC.B)){
        return EnumABC.C; 
    } else
    if((pEnum1 == EnumABC.A || pEnum2 == EnumABC.A)
        && (pEnum1 == EnumABC.C || pEnum2 == EnumABC.C)){
        return EnumABC.B;
    } else{
       return EnumABC.A;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有比这更可读的解决方案。

java enums readability

1
推荐指数
1
解决办法
132
查看次数