Есть ли способ сделать метод всегда возвращать тип того же класса, который его назвал?Тип этого в Scala
Поясню:
class Shape {
var mName: String = null
def named(name: String): Shape = {
mName = name
this
}
}
class Rectangle extends Shape {
override def named(name: String): Rectangle = {
super.named(name)
this
}
}
Это работает, но есть способ сделать это без того, чтобы переопределить named
функцию во всех моих подклассов? Я ищу что-то вроде этого (что не работает):
class Shape {
var mName: String = null
def named(name: String): classOf[this] = { // Does not work but would be great
mName = name
this
}
}
class Rectangle extends Shape {
}
Любая идея? Или это невозможно?
Следует отметить, что одноэлементный тип не может использоваться для экземпляров, которые не являются «этим». – pedrofurla
@pderofurla: Казалось бы, это должно быть возможно с зависимыми от пути типами, но я мало знаю о зависимых от пути типах в Scala, и я даже не уверен, что они все еще экспериментальные. –
Я не думаю, что это связано с зависимыми от пути типами. И нет, зависящие от пути типы не являются экспериментальными. – pedrofurla