java 枚举继承枚举_java-在枚举中实现内部接口时的循环继承

我有以下实现会产生编译器错误:

public enum FusionStat implements MonsterStatBuilderHelper {

ATTACK {

@Override

public MonsterCard.MonsterCardBuilder safeCreateBuilder(final MonsterCard baseMonsterCard, final MonsterCard fusedMonsterCard, final FusionCard fusionCard) {

Objects.requireNonNull(baseMonsterCard);

Objects.requireNonNull(fusedMonsterCard);

Objects.requireNonNull(fusionCard);

if (baseMonsterCard.equals(fusedMonsterCard)) {

throw new IllegalArgumentException("baseMonsterCard and fusedMonsterCard need to be different");

}

return new MonsterCard.MonsterCardBuilder(baseMonsterCard)

.attack(baseMonsterCard.getAttack() + (fusionCard.getFusionPower() * fusedMonsterCard.getAttack()));

}

},

HITPOINTS {

@Override

public MonsterCard.MonsterCardBuilder safeCreateBuilder(final MonsterCard baseMonsterCard, final MonsterCard fusedMonsterCard, final FusionCard fusionCard) {

Objects.requireNonNull(baseMonsterCard);

Objects.requireNonNull(fusedMonsterCard);

Objects.requireNonNull(fusionCard);

if (baseMonsterCard.equals(fusedMonsterCard)) {

throw new IllegalArgumentException("baseMonsterCard and fusedMonsterCard need to be different");

}

return new MonsterCard.MonsterCardBuilder(baseMonsterCard)

.maximumHitpoints((int)(baseMonsterCard.getMaximumHitpoints() + (fusionCard.getFusionPower() / 100d * fusedMonsterCard.getMaximumHitpoints())))

.hitpoints((int)(baseMonsterCard.getHitpoints() + (fusionCard.getFusionPower() / 100d * fusedMonsterCard.getHitpoints())));

}

};

protected interface MonsterStatBuilderHelper extends MonsterStatBuilder {

default MonsterCard.MonsterCardBuilder safeCreateBuilder(final MonsterCard baseMonsterCard, final MonsterCard fusedMonsterCard, final FusionCard fusionCard) {

return createBuilder(baseMonsterCard, fusedMonsterCard, fusionCard);

}

}

}

@FunctionalInterface

interface MonsterStatBuilder {

MonsterCard.MonsterCardBuilder createBuilder(final MonsterCard baseMonsterCard, final MonsterCard fusedMonsterCard, final FusionCard fusionCard);

}

它在第一行safeCreateBuilder上给出了循环继承错误。

我完全不知道发生了什么。 我首先实现了一个抽象类,并希望让枚举扩展该类,直到我意识到枚举无法扩展类。 现在,我尝试(ab)使用Java 8中的默认方法。

我对为什么我的代码无法编译的思考过程很感兴趣,我试图通过在safeCreateBuilder内提取重复的代码来删除代码重复(仍然必须这样做)。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值