我试图做这样的事情,即在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) 我有标志位的问题.我有一个int变量来保存标志.首先,我为该变量设置了一些标志.后来我需要检查该变量中设置了多少个标志.但我不知道这样做.
我有一个实体,它在数据库中有一些BIT字段:
这些字段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)