Ruby中有概念名称open class,可以在不编写子类的情况下为现有类添加新方法。
在Scala中还有一个技术类隐式类可以做同样的事情,这里有一些代码片段:使用隐式类s,我实际上在类String中添加了一个新方法isCorrect。
object ImplicitDemo {
implicit class s(s:String){
def isCorrect = s.startsWith("dw_")
}
def main(args: Array[String]) {
println("duowan" isCorrect )
}
}
那么,有没有办法可以在纯java中做同样的事情?
答案 0 :(得分:1)
答案 1 :(得分:1)
很多人都希望在Java中使用接口注入(在运行时向现有类添加新接口)多年(甚至几十年),但到目前为止,没有任何结果。
如果Java在将来的某个时间获得接口注入,那么与默认方法(在Java 7中添加)的组合确实允许添加像Scala这样的新方法。但是,它仍然不允许更改Ruby中的现有方法。
然而,在那之前,唯一的方法是通过自定义类加载器来重新加载类。