Propiedades anulantes de la clase abstracta en Salesforce Apex
-
24-10-2019 - |
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.
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;
}
}