在方法覆盖中使用子类型参数

Lis*_*nne 3 java covariance

public abstract class SequenceItemHolder {

    public SequenceItemHolder(View itemView) {
    }

    public abstract void setData(SequenceRowElement.RowElement rowElement);


        public static class TesteItemHolder extends SequenceItemHolder {

        public TesteItemHolder(View itemView) {
        }

        @Override
        public void setData(SequenceRowElement.TestRowElement rowElement) {
        }
   }
}
Run Code Online (Sandbox Code Playgroud)

请问有人可以解释我为什么在覆盖中出现编译错误?

请问如何修复它(不使用界面)?


注意:TestRowElement扩展RowElement

Stu*_*ske 5

错误1

public SequenceItemHolder(View itemView) {
    super(itemView);
    }
Run Code Online (Sandbox Code Playgroud)

对象没有将View作为参数的构造函数.删除超级电话.

错误2

public abstract void setData(SequenceRowElement.RowElement rowElement) {}
Run Code Online (Sandbox Code Playgroud)

抽象方法不应该有一个体.用这个替换它:

public abstract void setData(SequenceRowElement.RowElement rowElement);
Run Code Online (Sandbox Code Playgroud)

错误3

您的overriden方法应该与抽象方法具有相同的参数类型.