防止在Scala中使用现有方法

防止在Scala中使用现有方法,scala,Scala,我可以防止在编译时从现有Java/Scala类调用所选方法吗?因此,试图调用禁止方法的代码将无法编译 我有一个使用以下方法的现有Scala类(来自外部库) def saveToDb[A](A:A) 但不幸的是,当a无法保存到数据库时,它抛出异常。因为我想在编译时检测这种情况,所以我可以编写 def safeSaveToDb[A:CanBeSavedToDb](A:A) 其中类型类实例保证a可以保存到数据库中,并且不会引发异常。现在可以防止使用saveToDb如果我理解正确,您需要有一个接口,它将

我可以防止在编译时从现有Java/Scala类调用所选方法吗?因此,试图调用禁止方法的代码将无法编译

我有一个使用以下方法的现有Scala类(来自外部库)

def saveToDb[A](A:A)

但不幸的是,当
a
无法保存到数据库时,它抛出异常。因为我想在编译时检测这种情况,所以我可以编写

def safeSaveToDb[A:CanBeSavedToDb](A:A)


其中类型类实例保证
a
可以保存到数据库中,并且不会引发异常。现在可以防止使用
saveToDb

如果我理解正确,您需要有一个接口,它将是您的多态函数类型绑定

乙二醇

trait可以保存{
def todatatobesave:String//这只是一个示例
}
//那你就这样吧

最终def saveToDb[A尝试使
类A
成员
暂时性
如果您使用Maven作为构建工具,那么您可以使用
pmd
设置使用规则。@SarveshKumarSingh如果我找不到任何解决方案如何在ScalaYeah中实现,我可以做到,但外部库中仍然有一个不安全的函数sn不支持
canbesave
,我想以某种方式隐藏此函数,以便我和其他程序员不会意外使用它。将其设置为最终:)此外,如果边界不一致,则不能重写它。否则它实际上不会被重写问题是
saveToDb
来自外部库,我无法修改It、 我刚刚编写了一个更安全的函数
safeSaveToDb
,我想防止使用原始的不安全函数。是否扩展该类?
   trait CanBeSaved {
      def toDataToBeSaved: String //this is just an example
   }

   //then your bounds like so

   final def saveToDb[A <: CanBeSaved](a: A): Future[Unit] = save(a)

   def save(json: String): Future[Unit]