java 枚举 扩展_是否可以在Java 8中扩展枚举?

刚刚玩,并提出了一个甜蜜的方式来添加功能到

Java Enum toString() method与

this的枚举.

一些进一步的修补使我几乎可以增加一个整洁(即不抛出异常)反向查找,但有一个问题.报告:

error: valueOf(String) in X cannot implement valueOf(String) in HasValue

public enum X implements PoliteEnum,ReverseLookup {

overriding method is static

有办法吗

这里的目标是默认添加(通过一个默认方法,如我在链接的答案中添加了politeName)的一个接口实现一个没有抛出异常的valueOf函数的查找方法.可能吗?显然现在可以将枚举扩展为Java的一个主要问题,直到现在为止.

这是我失败的尝试:

public interface HasName {

public String name();

}

public interface PoliteEnum extends HasName {

default String politeName() {

return name().replace("_"," ");

}

}

public interface Lookup

{

public Q lookup(P p);

}

public interface HasValue {

HasValue valueOf(String name);

}

public interface ReverseLookup extends HasValue,Lookup {

@Override

default HasValue lookup(String from) {

try {

return valueOf(from);

} catch (IllegalArgumentException e) {

return null;

}

}

}

public enum X implements PoliteEnum/* NOT ALLOWED :(,ReverseLookup*/ {

A_For_Ism,B_For_Mutton,C_Forth_Highlanders;

}

public void test() {

// Test the politeName

for (X x : X.values()) {

System.out.println(x.politeName());

}

// ToDo: Test lookup

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值