java 返回枚举_Java枚举方法-返回相反方向的枚举

本文介绍了在Java枚举中定义和调用方法的方式,包括通过实例调用非静态方法,并展示了两种实现枚举中获取相反方向的示例。第一种方法直接在枚举中定义相对方向,而第二种方法利用枚举常量的顺序计算相反方向,但灵活性较低。
摘要由CSDN通过智能技术生成

小编典典

对于那些按标题吸引的人:是的,您可以在枚举中定义自己的方法。如果您想知道如何调用这种非静态方法,则可以使用与其他任何非静态方法相同的方法-

在定义或继承该方法的类型实例上调用它。如果是枚举,则此类实例仅为ENUM_CONSTANTs。

因此,您所需要做的就是EnumType.ENUM_CONSTANT.methodName(arguments)。

现在让我们从问题回到问题。解决方案之一可能是

public enum Direction {

NORTH, SOUTH, EAST, WEST;

private Direction opposite;

static {

NORTH.opposite = SOUTH;

SOUTH.opposite = NORTH;

EAST.opposite = WEST;

WEST.opposite = EAST;

}

public Direction getOppositeDirection() {

return opposite;

}

}

现在Direction.NORTH.getOppositeDirection()将返回Direction.SOUTH。

这是说明@jedwards注释的更多“

hacky”方法,但是它不如第一种方法灵活,因为添加更多字段或更改其顺序将破坏我们的代码。

public enum Direction {

NORTH, EAST, SOUTH, WEST;

// cached values to avoid recreating such array each time method is called

private static final Direction[] VALUES = values();

public Direction getOppositeDirection() {

return VALUES[(ordinal() + 2) % 4];

}

}

2020-09-09

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值