Thanks Cedric, that's interesting. I never really followed this advice:

This is one of the reasons why we recommend to use typed fields. While using def for local variables is perfectly fine thanks to type inference, this is not the case for fields, which also belong to the public API of a class, hence the type is important.

I guess I will now...

On Wed, Aug 26, 2015 at 9:19 AM, Cédric Champeau <> wrote:
Hi Jamie,

See for an explanation.

2015-08-26 10:14 GMT+02:00 Jamie Echlin <>:
I'm confused about the type checking in one instance. Take this:

class Foo {
    String getBar() { "bar" }

class TestFoo {

    def foo = new Foo()

    void test() {
        assert == "bar"

If the def of foo is within the test() method it's fine, but where it is it seems not to be able to resolve the type (cannot resolve symbol "bar"). Why can't it infer the type - I don't see what will change the type between initialisation and the when the method is called.

cheers, jamie