Java – No enclosing instance of type Foo is accessible

static class Thing will make your program work.

As it is, you’ve got Thing as an inner class, which (by definition) is associated with a particular instance of Hello (even if it never uses or refers to it), which means it’s an error to say new Thing(); without having a particular Hello instance in scope.

If you declare it as a static class instead, then it’s a “nested” class, which doesn’t need a particular Hello instance.

Leave a Comment