DaTval:
それは、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を継承のtoString()のスロー可能オブジェクトと私は今のところそのためtoString()を生成するライブラリスキップをImmutables見てきましたから。
Ievgen Lukash:
そのような方法があります。トリックは抽象宣言する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
}