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

只是在玩,并想出了一个甜蜜的方法来使用此方法enum在JavaEnum toString()方法中向s

添加功能。

一些进一步的修改使我 几乎 也可以添加整洁的(即不引发异常)反向查找,但是存在问题。报告:

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

public enum X implements PoliteEnum, ReverseLookup {

overriding method is static

有办法吗?

这里的目的是(通过一个接口实现,使用default像我politeName在链接的答案中添加的方法一样)静默地添加一个在不引发异常的情况下lookup执行该valueOf功能的方法。可能吗?现在显然可以扩展enum-

到目前为止,我的主要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、付费专栏及课程。

余额充值