Каковы профессионалы использования черт по абстрактным классам?

Командная строка Windows очень ограничивает в этом отношении. Обходное решение должно создать "банку соединения каналом". Это - банка, содержащая только Manifest.mf файл, чей Class-Path определяет дисковые пути Вашего длинного списка банок, и т.д. Теперь просто добавьте этот банка соединения каналом к Вашему пути к классу командной строки. Это обычно более удобно, чем упаковка фактических ресурсов вместе.

, Поскольку я вспоминаю, дисковые пути могут быть относительно банка соединения каналом сама. Так эти Manifest.mf мог бы выглядеть примерно так:

Class-Path: this.jar that.jar ../lib/other.jar

, Если Ваш банка соединения каналом будет содержать главным образом основополагающие ресурсы, то она не будет изменяться слишком часто, но Вы, вероятно, все еще захотите генерировать его где-нибудь в Вашей сборке. Например:

<jar destfile="pathing.jar">
  <manifest>
    <attribute name="Class-Path" value="this.jar that.jar ../lib/other.jar"/>
  </manifest>
</jar>
81
задан Jacek Laskowski 23 December 2014 в 21:33
поделиться

2 ответа

Короткий ответ заключается в том, что вы можете использовать несколько трейтов - они «складываются». Кроме того, у трейтов не может быть параметров конструктора.

Вот как трейты складываются в стек. Обратите внимание на важность порядка следования признаков. Они будут звать друг друга справа налево.

class Ball {
  def properties(): List[String] = List()
  override def toString() = "It's a" +
    properties.mkString(" ", ", ", " ") +
    "ball"
}

trait Red extends Ball {
  override def properties() = super.properties ::: List("red")
}

trait Shiny extends Ball {
  override def properties() = super.properties ::: List("shiny")
}

object Balls {
  def main(args: Array[String]) {
    val myBall = new Ball with Shiny with Red
    println(myBall) // It's a shiny, red ball
  }
}
80
ответ дан 24 November 2019 в 09:41
поделиться

Этот сайт дает хороший пример использования черт. Одним из больших преимуществ трейтов является то, что вы можете расширять несколько трейтов, но только один абстрактный класс. Черты решают многие проблемы с множественным наследованием, но позволяют повторно использовать код.

Если вы знакомы с рубином, черты его похожи на примеси

19
ответ дан 24 November 2019 в 09:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: