Code:
class File(filename : String) {
def name = filename
}
class Directory(dirName :String, content : List[FilesystemType]) {
def name = dirName
def getContent = content
}
Ich möchte jetzt in Directory sowohl Files als auch andere Directories speichern können. Also
Code:
val dir = new Directory( "/", List(new File("file1"), new Directory(...), new File("file2")) )
Damit das geht muss ja denke ich schreiben
Code:
class File(filename : String) extends FilesystemType {
override def name = filename
}
class Directory(dirName :String, content : List[FilesystemType]) extends FilesystemType {
override def name = dirName
override def getContent = content
}
Problem ist wie formuliere ich FilesystemType?
Code:
abstract class FilesystemType {
def name() : String
def getContent() : List[FilesystemType]
}
Nur für ein File Objekt macht der Aufruf getContent() keinen Sinn. Jedenfalls nicht wenn getContent eine List[FilesystemType] zurück gibt. Trotzdem wird File diese Schnittstelle implementieren müssen (denke ich) . Gibt's da nicht eine bessere Lösung für das Problem? Wie macht das normalerweise?