AutoValue如何调用super

时间:2017-07-13 00:29:12

标签: auto-value

@AutoValue
public abstract class MyError extends Throwable {

    public static MyError create(
            Throwable ex,
            MyErrorCode errorCode) {
        return new AutoValue_MyError(ex, errorCode);
    }

    public abstract Throwable getError();

    public abstract MyErrorCode myErrorCode();
}

我使用AutoValue创建MyError类,问题是如何super(ex.getCause())传递实际上下文。看起来生成的实现不会这样做。

1 个答案:

答案 0 :(得分:0)

HAS-A关系优于IS-A关系。所以MyError类不应该扩展Throwable类。

我认为我们无法致电super(ex.getCause())

AutoValue使用Builder模式创建不可变对象。 请参阅Github auto repository上的问题     getError()方法会返回Throwable个对象,然后您可以调用getClause()方法。