Я заметил, что это сломанное (для меня это с OGNL) изменение в 2.9.0-1:
Я считаю, что в 2.9 методы, объявленные в признаке, становятся изменчивыми при смешивании в классе:
Пример в 2.9.0-1
import java.lang.reflect.Modifier
trait SuperTrait {
def getKnoll = "Kanutten"
}
class KlassWithKnoll extends SuperTrait {
def getKnall = "Mars"
}
val qsc = classOf[KlassWithKnoll]
val knollGetter = qsc.getDeclaredMethod("getKnoll")
println("isVolatile: " + Modifier.isVolatile(knollGetter.getModifiers()))
Это распечатывает
isVolatile: true
Но в 2.8.1:
распечатывает
isVolatile: false
Это на самом деле серьезное изменение для меня, поскольку OGNL отказывается выполнять volatile (почему я не знаю) в его выражениях.
Итак, мой вопрос: Почему было сделано это изменение?