Mam następujące klasy w moim umyśle:Scala metoda abstrakcyjna klasa, która zwraca nowy odpowiedniej klasy obiektu podrzędnego
abstract class MyClass (data: MyData) {
def update(): MyClass = {
new MyClass(process())
}
def process(): MyData = {
...
}
}
Jednak klasy abstrakcyjne nie może być instancja więc linia new MyClass(process())
jest błąd. Moje pytanie brzmi - czy istnieje sposób, aby powiedzieć kompilatorowi, że w przypadku każdej z klas potomnych MyClass chcę utworzyć obiekt dokładnie tej klasy potomnej? Wydaje się, że przesadą jest pisanie tej metody we wszystkich klasach dzieci. Grając z parametrami klasy lub metody, nie mogłem tego osiągnąć.
(nie jesteś pewien, czy będzie pasować do twojego przypadku użycia) czy przyjrzałeś się klasom przypadków i jak je skopiować? ... w każdym razie, jeśli naprawdę chcesz to zrobić, będziesz walczyć z wymazaniem typu. –