力のJava ImmutablesはThrowableのクラスに対してtoString()を生成します

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
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=213183&siteId=1