У меня есть класс в Scala, который в настоящее время сконструирован стандартным образом:
class Test( int : Int )
{
override def toString() = "Test: %d".format( int )
}
Однако, я бы хотел перейти к косвенной конструкции через сопутствующий объект. Поскольку библиотека, которую я изменяю, используется другими, я не хочу сразу же закрывать конструктор. Вместо этого я хотел бы осудить его, а затем вернуться и сделать его закрытым, как только люди смогут изменить свое использование. Поэтому я изменил свой код следующим образом:
object Test
{
def apply( int : Int ) = new Test( int )
}
@deprecated( "Don't construct directly - use companion constructor", "09/04/13" )
class Test( int : Int )
{
override def toString() = "Test: %d".format( int )
}
Однако это обесценивает весь класс.
scala> Test( 4 )
<console>:10: warning: class Test in package foo is deprecated: Don't construct directly - use companion constructor
val res0 =
^
res0: com.foo.Test = Test: 4
Кто-нибудь знает, поддерживает ли Scala устаревание конструкторов, и если да, то как это делается?