Pregunta

Tengo una clase abstracta en Apex con varias propiedades que me gustaría anular en una clase infantil. Según la documentación, las propiedades admiten los modificadores de acceso de anulación y virtual. Sin embargo, cuando trato de usar cualquiera de ellos en la clase padre o hijo, recibo un error que dice que las variables no pueden marcarse como virtuales/anulaciones. Aquí hay un facsímil del código que causa este error:

public abstract class Row{
    public virtual double value{
        get{return value==null ? 0 : value;}
        set;
    }
}

public class SummaryRow extends Row{
    private list<Row> childRows;
    public override double value{
        get{
            totalValue = 0;
            for(Row childRow:childRows){
                totalvalue += childRow.value;
            }
            return totalValue;
        }
    }
}

¿Esta funcionalidad no es compatible o hay algo que me falta?

Gracias por adelantado.

¿Fue útil?

Solución

Desafortunadamente, hasta donde yo sé, eso es un error en la documentación. Solo he podido aplicar el override y virtual Modificadores a los métodos. Puede, por supuesto, obtener el efecto deseado escribiendo manualmente los métodos de Getter/Setter:

public abstract class TestRow {
    public Double value;

    public virtual Double getValue() {
        return value==null ? 0 : value;
    }

    public void setValue(Double value) {
        this.value = value;
    }
}

public class SummaryTestRow extends TestRow {
    private list<TestRow> childRows;

    public override Double getValue() {
        Double totalValue = 0;
        for(TestRow childRow : childRows){
            totalValue += childRow.value;
        }

        return totalValue;  
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top