ho la seguente classe nella mia mente:Scala metodo di classe astratta che restituisce un nuovo oggetto figlio corrispondente classe
abstract class MyClass (data: MyData) {
def update(): MyClass = {
new MyClass(process())
}
def process(): MyData = {
...
}
}
Tuttavia, le classi astratte non possono essere istanziati in modo che la linea di new MyClass(process())
è un errore. La mia domanda è - c'è un modo per dire al compilatore che in caso di ciascuna delle classi figlio di MyClass voglio creare un oggetto esattamente di quella classe figlio? Sembra un eccesso di scrivere questo metodo in tutte le classi di bambini. Giocare con i parametri di tipo della classe o del metodo che non potrei raggiungere io stesso.
(non sono sicuro che si adatti al tuo caso d'uso) hai dato un'occhiata alle case case e come copiarle? ... comunque se vuoi davvero farlo, combatterai contro la cancellazione di tipo. –