我的案例类BFile
和AFile
都扩展了特征File
。案例类BDir
和ADir
都扩展了特征Dir
。这些类被实例化为它们的特征类型。
我正在尝试编写隐式move
方法(位于A/BFile
和A/BDir
类之外的对象上),这些方法针对A/BFile
&的每个组合重载。 A/BDir
。
我不确定如何执行此操作,以便根据文件和目录的特定类隐式使用不同的.move
方法。这甚至可能吗?
我不希望在类中实现这些方法的原因是因为它需要引入额外的依赖项来使用类;我无法始终提供这些依赖项。
我也不想因为我试图遵循依赖性倒置原则而只依赖于课程。
编辑:我想我正在寻找以下或一些等价物:
trait File {
...
def move(directory: the class implementing this that extends Dir): File
def copy(directory: the class implementing this that extends Dir): File
}
trait Dir {
...
}