是否可以强制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(),而到目前为止,我所看到的Immutables库正因为如此而跳过生成toString()。
答案 0 :(得分:2)
有一种这样的方法。诀窍是用抽象值类型声明抽象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
}