相关疑难解决方法(0)

在switch中使用数组作为case语句

我试图做这样的事情,即在switch语句中使用数组.在Java中有可能吗?如果不是,请解释可能的解决方案.

boolean[] values = new boolean[4];

values[0] = true;
values[1] = false;
values[2] = false;
values[3] = true;

switch (values) {
    case [true, false, true, false]:
        break;
    case [false, false, true, false]:
        break;
    default:
        break;
}
Run Code Online (Sandbox Code Playgroud)

java arrays switch-statement

76
推荐指数
8
解决办法
7万
查看次数

检查标志位java

我有标志位的问题.我有一个int变量来保存标志.首先,我为该变量设置了一些标志.后来我需要检查该变量中设置了多少个标志.但我不知道这样做.

java flags bit-manipulation

45
推荐指数
4
解决办法
3万
查看次数

将一些布尔属性映射为枚举在Hibernate中设置

我有一个实体,它在数据库中有一些BIT字段:

  • 编辑
  • needs_review
  • 活性

这些字段boolean使用Hibernate 3.6.9版本映射到其Java类中的字段.这迫使我为每个想要获取的实体列表编写一个接口方法:

List<Entity> listEditables();
List<Entity> listReviewNeeded();
List<Entity> listActives();
Run Code Online (Sandbox Code Playgroud)

或者编写一个通用的接口方法来实现它们的组合:

List<Entity> listEntities(boolean editables, boolean reviewNeeded, boolean actives);
Run Code Online (Sandbox Code Playgroud)

第二个选择看起来更大,但是如果我将来添加另一个字段,则需要修改接口本身(以及与之耦合的每一行代码).

所以我决定将它表达为枚举Set:

public enum EntityType{
    EDITABLE, REVIEW_NEEDED, ACTIVE
}

//That way there's no need to change interface method's signature
List<Entity> listEntities(Set<EntityType> requiredTypes);
Run Code Online (Sandbox Code Playgroud)

有意义的是,枚举匹配我想要实现的,Entity类型本身应该有它自己的Set<EntityType>:

public class Entity{
    Set<EntityType> entityTypes;
}
Run Code Online (Sandbox Code Playgroud)

然而,而不是我有映射的布尔值在逻辑上匹配Set.然后我的问题是,有没有办法Set<EntityType> entityTypes在基于BIT字段的hibernate中进行映射,还是我必须自己管理那些逻辑boolean

UPDATE

将它们映射为a Set意味着使用in子句查询List的可能性,如果不是,则意味着在我的控制器和模型代码之间进行转换的额外步骤.

Set<EntityType> typesSet = Sets.newHashSet(EntityType.EDITABLE, EntityType.REVIEW_NEEDED); …
Run Code Online (Sandbox Code Playgroud)

java hibernate

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