我需要修改第三个方法mapDirectionToTrafficProfileDirection()
以显示Both
。 Direction
类是一个枚举类,只有 IN 和 OUT
。
public enum Direction {
IN,
OUT;
和TrafficProfileExtension
类还具有方向枚举Egress、Ingress、Both;
public class TrafficProfileExtension {
private TrafficProfile entity;
public static enum Direction {
Egress, Ingress, Both;
}
我需要修改第三个方法来显示 Both
有没有办法可以在不更改/添加 Direction 类中新枚举的情况下添加它?
private TrafficProfileExtension.Direction mapDirectionToTrafficProfileDirection (Direction direction){
if (Direction.OUT.equals(direction)){
return TrafficProfileExtension.Direction.Egress;
}
if (Direction.IN.equals(direction)){
return TrafficProfileExtension.Direction.Ingress;
}
if (Direction. ?? .equals(direction)){
return TrafficProfileExtension.Direction.Both;
}
return null;
}
}
我们的代码中有这个方法,他们能够在不更改 Direction
类中的枚举的情况下添加枚举。
示例方法如下:
private List<Direction> mapTrafficProfileDirection (TrafficProfileExtension.Direction direction) throws Exception {
List<Direction> directionList = new ArrayList<Direction>();
if (TrafficProfileExtension.Direction.Egress.equals(direction)){
directionList.add(Direction.OUT);
return directionList;
}
if (TrafficProfileExtension.Direction.Ingress.equals(direction)){
directionList.add(Direction.IN);
return directionList;
}
if (TrafficProfileExtension.Direction.Both.equals(direction)){
directionList.add(Direction.OUT);
directionList.add(Direction.IN);
return directionList;
}
throw new Exception("Illegal direction passed through method " + direction.name());
}
最佳答案
作为特殊情况,您可以使用 null
调用该方法。
if (direction == null){
return TrafficProfileExtension.Direction.Both;
}
但这并不是一个非常干净的解决方案,因为 null
通常意味着“没有方向”。
所以,看来您已经在使用列表从 Direction
映射到 TrafficProfileExtension.Direction
,那么为什么不使用列表来映射另一个方向呢?
private TrafficProfileExtension.Direction mapDirectionToTrafficProfileDirection(List<Direction> directionList) {
if(directionList.contains(Direction.IN) && directionList.contains(Direction.OUT)){
return TrafficProfileExtension.Direction.Both;
}
if (directionList.contains(Direction.IN)){
return TrafficProfileExtension.Direction.Ingress;
}
if (directionList.contains(Direction.OUT)){
return TrafficProfileExtension.Direction.Egress;
}
return null;
}
关于Java 在方法中添加枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32590158/