Класс scala.annotation.elidable
Компонент объект elidable
final класс elidable extends Annotation с StaticAnnotation
Конструкторы экземпляров
новый elidable(level: Int)
Члены-значения
final def !=(arg0: Any): Boolean
Проверка двух объектов на неравенство.
- возвращает
trueесли !(this == that), в противном случае — false.
- Definition Classes
- AnyRef → Any
final def ##(): Int
Эквивалентно x.hashCode, за исключением упакованных числовых типов и null. Для чисел возвращает значение хеша, согласованное с равенством значений: если две экземпляра типа значения сравниваются как true, то ## для каждого из них вернёт одно и то же значение хеша. Для null возвращает хешкод, при котором null.hashCode вызывает NullPointerException.
- возвращает
значение хеша, согласованное с ==
- Definition Classes
- AnyRef → Any
def +(other: String): String
- Неявный
- Этот член добавлен неявным преобразованием из elidable в any2stringadd[elidable] с помощью метода any2stringadd в scala.Predef.
- Definition Classes
- any2stringadd
def ->[B](y: B): (elidable, B)
- Неявный
- Этот член добавлен неявным преобразованием из elidable в ArrowAssoc[elidable] с помощью метода ArrowAssoc в scala.Predef.
- Definition Classes
- ArrowAssoc
- Аннотации
- @inline()
final def ==(arg0: Any): Boolean
Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).
- возвращает
trueесли объект-получатель эквивалентен аргументу;falseв противном случае.
- Definition Classes
- AnyRef → Any
final def asInstanceOf[T0]: T0
Приведение объекта-получателя к типу T0.
Обратите внимание, что успех приведения во время выполнения зависит от семантики стирания в Scala. Поэтому выражение 1.asInstanceOf[String] бросит ClassCastException во время выполнения, а выражение List(1).asInstanceOf[List[String]] — нет. В последнем примере из-за стирания типа во время компиляции невозможно проверить, соответствуют ли элементы списка требуемому типу.
- возвращает
объект-получатель.
- Definition Classes
- Any
- Исключения
ClassCastExceptionесли объект-получатель не является экземпляром стёртого типаT0.
def clone(): AnyRef
Создаёт копию объекта-получателя.
По умолчанию реализация метода clone зависит от платформы.
- возвращает
копию объекта-получателя.
def ensuring(cond: (elidable) ⇒ Boolean, msg: ⇒ Any): elidable
- Неявный
- Этот член добавлен неявным преобразованием из elidable в Ensuring[elidable] с помощью метода Ensuring в scala.Predef.
- Definition Classes
- Ensuring
def ensuring(cond: (elidable) ⇒ Boolean): elidable
- Неявный
- Этот член добавлен неявным преобразованием из elidable в Ensuring[elidable] с помощью метода Ensuring в scala.Predef.
- Definition Classes
- Ensuring
def ensuring(cond: Boolean, msg: ⇒ Any): elidable
- Неявный
- Этот член добавлен неявным преобразованием из elidable в Ensuring[elidable] с помощью метода Ensuring в scala.Predef.
- Definition Classes
- Ensuring
def ensuring(cond: Boolean): elidable
- Неявный
- Этот член добавлен неявно посредством преобразования из elidable в Ensuring[elidable] с помощью метода Ensuring в scala.Predef.
- Классы определений
- Ensuring
final def eq(arg0: AnyRef): Boolean
Проверяет, является ли аргумент (that) ссылкой на объект-получатель (this).
Метод eq реализует отношение эквивалентности на не-null экземплярах AnyRef, и имеет три дополнительных свойства:
-
Он согласован: для любых не-null экземпляров
x и y типа AnyRef, многократные вызовы x.eq(y) последовательно возвращают true или последовательно возвращают false. Для любого не-null экземпляра x типа AnyRef, вызовы x.eq(null) и null.eq(x) возвращают false.
null.eq(null) возвращает true. При переопределении методов equals или hashCode важно обеспечить, чтобы их поведение соответствовало равенству ссылок. Поэтому, если два объекта ссылаются друг на друга (o1 eq o2), они должны быть равны друг другу (o1 == o2) и должны иметь одинаковое значение хэша (o1.hashCode == o2.hashCode).
- возвращает
trueесли аргумент является ссылкой на объект-получатель;falseв противном случае.
- Классы определений
- AnyRef
def equals(arg0: Any): Boolean
Метод равенства для ссылочных типов. По умолчанию делегирует вызов eq.
См. также equals в scala.Any.
- возвращает
trueесли объект-получатель эквивалентен аргументу;falseв противном случае.
- Классы определений
- AnyRef → Any
def finalize(): Unit
Вызывается сборщиком мусора для объекта-получателя, когда больше нет ссылок на объект.
Подробности о том, когда и если вызывается метод finalize, а также взаимодействие между finalize и нелокальными возвратами и исключениями, зависят от платформы.
- Атрибуты
- protected[lang]
- Классы определений
- AnyRef
- Аннотации
- @throws( classOf[java.lang.Throwable] )
- Примечание
не специфицировано SLS как член AnyRef
def formatted(fmtstr: String): String
Возвращает строку, отформатированную в соответствии с заданной format строкой. Форматные строки аналогичны String.format (@см. java.lang.String.format).
- Неявный
- Этот член добавлен неявно посредством преобразования из elidable в StringFormat[elidable] с помощью метода StringFormat в scala.Predef.
- Классы определений
- StringFormat
- Аннотации
- @inline()
final def getClass(): Class[_]
Возвращает представление класса объекта во время выполнения.
- возвращает
объект класса, соответствующий типу получателя во время выполнения.
def hashCode(): Int
Метод hashCode для ссылочных типов. См. hashCode в scala.Any.
- возвращает
значение хэша для этого объекта.
final def isInstanceOf[T0]: Boolean
Проверяет, является ли динамический тип объекта-получателя T0.
Обратите внимание, что результат проверки зависит от правил стирания типов в Scala. Поэтому выражение 1.isInstanceOf[String] вернёт false, в то время как выражение List(1).isInstanceOf[List[String]] вернёт true. В последнем примере, из-за стирания типа во время компиляции, невозможно проверить, относятся ли элементы списка к указанному типу.
- возвращает
trueесли объект-получатель является экземпляром стёртого типаT0;falseв противном случае.
- Классы определений
- Any
final val level: Int
final def ne(arg0: AnyRef): Boolean
Эквивалентно !(this eq that).
- возвращает
trueесли аргумент не является ссылкой на объект-получатель;falseв противном случае.
- Классы определений
- AnyRef
final def notify(): Unit
Разбуживает единственную нить, ожидающую монитора объекта-получателя.
- Классы определений
- AnyRef
- Аннотации
- @native()
- Примечание
не специфицировано SLS как член AnyRef
final def notifyAll(): Unit
Разбуживает все потоки, ожидающие монитора объекта-получателя.
- Классы-определения
- AnyRef
- Аннотации
- @native()
- Примечание
не указано SLS как член AnyRef
final def synchronized[T0](arg0: ⇒ T0): T0
- Классы-определения
- AnyRef
def toString(): String
Создает строковое представление этого объекта. По умолчанию представление зависит от платформы. На платформе Java это объединение имени класса, «@» и хэш-кода объекта в шестнадцатеричном формате.
- возвращает
строковое представление объекта.
- Классы-определения
- AnyRef → Any
final def wait(): Unit
- Классы-определения
- AnyRef
- Аннотации
- @throws( ... )
final def wait(arg0: Long, arg1: Int): Unit
- Классы-определения
- AnyRef
- Аннотации
- @throws( ... )
final def wait(arg0: Long): Unit
def →[B](y: B): (elidable, B)
- Неявный
- Этот член добавлен неявным преобразованием из elidable в ArrowAssoc[elidable] посредством метода ArrowAssoc в scala.Predef.
- Классы-определения
- ArrowAssoc
© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.12.9/scala/annotation/elidable.html
Аннотация для методов, тела которых могут быть исключены из сгенерированного байткода компилятором.
Поведение зависит от передачи
-Xelide-below <arg>вscalac. Вызовы методов, помеченных аннотацией elidable (а также тела методов), будут опущены из сгенерированного кода, если приоритет, заданный аннотацией, ниже, чем заданный в командной строке.Вызов метода будет заменён выражением, которое зависит от типа исключённого выражения. В порядке убывания приоритета:
Полный пример:
import scala.annotation._, elidable._ object Test extends App { def expensiveComputation(): Int = { Thread.sleep(1000) ; 172 } @elidable(WARNING) def warning(msg: String) = println(msg) @elidable(FINE) def debug(msg: String) = println(msg) @elidable(FINE) def computedValue = expensiveComputation() warning("Warning! Danger! Warning!") debug("Debug! Danger! Debug!") println("I computed a value: " + computedValue) } % scalac example.scala && scala Test Warning! Danger! Warning! Debug! Danger! Debug! I computed a value: 172 // INFO lies between WARNING and FINE % scalac -Xelide-below INFO example.scala && scala Test Warning! Danger! Warning! I computed a value: 02.8