小编Mey*_*hen的帖子

实现相同接口的枚举上的Java切换

我有一个小组项目,我们被迫使用提供的接口和枚举.

想象一下如下情况:

// marker interface
interface Request<T extends Response>{}

// marker interface
interface Response{}

enum TypeAction implements Request<SomeEnumClassThatImplementsResponse>{
      TYPE1, TYPE2, TYPE3
}

enum OtherTypeAction implements Request<SomeOtherEnumClassThatImplementsResponse>{
      OTHERTYPE1, OTHERTYPE2    
}
Run Code Online (Sandbox Code Playgroud)

在另一个类中,我有一个这样的请求列表:List<Request> req = new LinkedList<Request>() 我想要做的是:做一个如下所示的开关:

switch(a_request){
   CASE TYPE1: ....
   CASE TYPE2: ....
   CASE TYPE3: ....
   CASE TYPE2: ....
   CASE OTHERTYPE1: ....
   CASE OTHERTYPE2: ....
}
Run Code Online (Sandbox Code Playgroud)

我怎么能设法做到这一点?

重要说明:我无法在接口和枚举中添加方法,但我可以创建实现上面可以看到的接口的新枚举.如果可能的话,我宁愿没有两个能做同样事情的枚举.

编辑:它与可能的重复答案不同,因为我无法在Request接口中添加任何方法,因此我无法在枚举类中实现方法.

提前致谢

java oop enums interface

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

将`Arrays.stream(...).collect(...)`从Java 8转换为Java 7

如何转换这段代码:

private static Map<CustomObj<? extends CustomOtherObj>, CustomEnumeration> map;
    if (map == null) {
        map = Arrays.stream(CustomEnumeration.values())
            .collect(Collectors.toMap(x -> x.source, x -> x));
    }
Run Code Online (Sandbox Code Playgroud)

进入Java 7等价?(Arrays.stream.collect(Collectors....)部分.

基本上,上面的代码将一些元素放在地图中.

java java-7 java-8

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

标签 统计

java ×2

enums ×1

interface ×1

java-7 ×1

java-8 ×1

oop ×1