AutoValue如何调用super

AutoValue how to call super

@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 class,问题是我如何 super(ex.getCause()) 传递实际上下文。看起来生成的实现并没有这样做。

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

我想我们不能打电话给 super(ex.getCause())

AutoValue 使用生成器模式创建不可变对象。 查看 Github auto repository 上的问题 getError() 方法将 return Throwable 对象然后你可以调用相同的 getClause() 方法。