首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >强制Java不可变为Throwable类生成toString()

强制Java不可变为Throwable类生成toString()
EN

Stack Overflow用户
提问于 2018-09-11 10:41:18
回答 1查看 264关注 0票数 3

是否可以强制Java Immutables批注处理库为已经继承了非默认toString()方法的抽象类生成toString方法?

例如:

@Value.Immutables
public abstract class MyRuntimeException extends RuntimeException {
    @Value.Default
    public abstract long timestamp();
    @Value.Redacted
    public abstract long secretTimestamp();
}

结果是:

MyRuntimeException e = ImmutableMyRuntimeException.builder().timestamp(111)
                                              .secretTimestamp(222).build();
assert e.toString().contains("111");
assert !e.toString().contains("222");

RuntimeException继承了Throwables的toString(),到目前为止,我所看到的不可变库会跳过生成toString()的过程。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-12 02:47:19

有一种这样的方法。诀窍是在抽象值类型中声明抽象toString方法签名。

@Value.Immutable
public abstract class MyRuntimeException extends RuntimeException {
    public abstract long timestamp();
    public abstract long secretTimestamp();
    @Override public abstract String toString(); //<-- forces toString impl
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52267965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档