注释主构造函数

/**
 * @param num Numerator
 * @param denom Denominator
 * @throws ArithmeticException in case `denom` is `0`
 */
class Division @throws[ArithmeticException](/*no annotation parameters*/) protected (num: Int, denom: Int) {
    private[this] val wrongValue = num / denom
    
    /** Integer number
     *  @param num Value */
    protected[Division] def this(num: Int) {
      this(num, 1)
    }
}
object Division {
  def apply(num: Int) = new Division(num)
  def apply(num: Int, denom: Int) = new Division(num, denom)
}

可见性修饰符(在本例中为 protected)应位于同一行中的注释之后。如果注释接受可选参数(在这种情况下 @throws 接受可选原因),则必须为注释指定空参数列表:构造函数参数之前的 ()

注意:即使是相同的类型( 重复注释 ) ,也可以指定多个注释。

与没有辅助工厂方法的 case 类(以及为注释指定的原因)类似:

case class Division @throws[ArithmeticException]("denom is 0") (num: Int, denom: Int) {
    private[this] val wrongValue = num / denom
}