Mówię, mam ogólną cechę polecenia z metodą execute, która pobiera dane wejściowe i zwraca dane wyjściowe. Coś jakJak sprawić, aby następujący typ kodu był bezpieczny?
trait Input;
trait Output;
trait Command[I <: Input, O <: Output] {
def execute(input: I): O;
}
Potem zamierzam tworzyć różne polecenia, coś
class SampleInput extends Input
class SampleOutput extends Output
class SampleCommand extends Command[SampleInput, SampleOutput] {
def execute(input:SampleInput):SampleOutput = new SampleOutput()
}
Problem z tym jest mogłam stworzyć Command z SampleAInput
i SampleBOutput
i kompilator będzie przyjąć, że szczęśliwie . W jaki sposób wymusić, aby kompilator zakończył się niepowodzeniem z błędem niezgodności typu?
Jakoś muszę zgrupować Input
i Output
pod typem i przekazać ten typ, aby utworzyć polecenie . Jak mogę to zrobić?
Doskonały! Właśnie tego szukałem. Dzięki IttayD. – sanjib