В OgnlRuntime у нас есть:
static boolean isMethodCallable(Method m)
{
if ((isJdk15() && m.isSynthetic()) || Modifier.isVolatile(m.getModifiers()))
return false;
return true;
}
, которые вызываются в getDeclaredMethods () и метод пропускается, если isMethodCallable () возвращает true.Это означает, что все методы в scala-trait (начиная с scala-2.9) никогда не будут выполнены.
В чем причина пропускания volatile (и в этом смысле синтетических, генерируемых компилятором) методов?
Смежный вопрос (мной): Методы в признаке становятся изменчивыми при смешивании в конкретных классах в 2.9.0-1, но не в 2.8.1