Hi all, Java 8 introduced the ability to access effectively final variables/method parameters from anonymous classes without having to add explicitly the "final" keyword.
This has resulted in a lot of cases where the programmer does not notice that they are referencing a model object from an anonymous class, which results in the model object being serialized. Example: code inside a hypothetical MyPanel.newLink() method... Myclass obj = getModelObject(); return new AjaxLink<Void>("link") { void onClick(AjaxRequestTarget t) { if (obj.getId() != null) { // do something } else { // do something else } } In previous java versions you'd have to declare obj as final, and this would help you notice that it is going to be serialized. I understand that it is easy to change the code and avoid obj being serialized. The problem is not how to fix the code - the problem is that this "problem" often goes unnoticed. As far as I have searched, there is no way to disable this behavior (not having to explicitly declare variables as final) in java 8. Do you have any suggestions on how to handle this? Thank you in advance, Marios