小编And*_*bie的帖子

Java 枚举中的强制切换默认值

假设我创建了一个枚举,例如下面的:

public enum MyEnum {
    A,
    B,
    C;
}
Run Code Online (Sandbox Code Playgroud)

并且有一个 switch 语句(如下所示),其中每个枚举值都有一个 case 语句,但我还添加了一个默认值来抛出 IllegalArgumentException。(如果添加了一个新的枚举值,那么如果新值被传递,那么有人更有可能会注意到该 case 语句出了问题。我的想法是异常比日志或尝试处理新值更引人注目案件。)

switch(myEnum) {
    case A:
        //do something
        break;
    case B:
        //do something
        break;
    case C:
        //do something
        break;
    default:
        throw new IllegalArgumentException("Unrecognized enum type!");
}
Run Code Online (Sandbox Code Playgroud)

除非我遗漏了某些东西,否则从理论上讲,如果不添加新的枚举值或更改 switch 语句,默认值应该是无法访问的。

所以我想知道的是,如果我正在编写代码覆盖率的 JUnit 测试,是否有办法强制切换到默认语句而不更新应用程序代码?

java enums switch-statement

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

切换对象之间的关联方向

说我有一节课foo:

class foo {
    String someString;
    List<String> someList;
}
Run Code Online (Sandbox Code Playgroud)

如果我有一个列表foo,有没有办法让我创建一个新的列表/数组/什么是foo基本上someStringsomeList值重新映射?例如:

arr1: [
    foo {
        someString: 'test1',
        someList: ['a', 'b']
    },
    foo {
        someString: 'test2',
        someList: ['b', 'c']
    }
]
Run Code Online (Sandbox Code Playgroud)

会成为

arr2: [
    foo {
        someString: 'a',
        someList: ['test1']
    },
    foo {
        someString: 'b',
        someList: ['test1', 'test2']
    },
    foo {
        someString: 'c',
        someList: ['test2']
    },
]
Run Code Online (Sandbox Code Playgroud)

现在,我有一个嵌套循环,它迭代someList每个foo的每个元素,并将它们编译成一个映射,其中键是someList值,值是一组someString来自foos的someList值,其中存在值.然后执行条目集的映射,将其转换为新的foos,其中键和值作为构造函数参数传递.

Map<String, Set<String>> myMap;

for(foo f : …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

标签 统计

java ×2

enums ×1

java-8 ×1

java-stream ×1

switch-statement ×1