There is not much to add, the whole question is in the title.
Consider these two instances of class Foo used in a Spock specification.
@Shared Foo foo1 = new Foo()
static Foo foo2 = new Foo()
Overall, I know the idea behind @Shared annotation but I guess it's better to use language features, which in this case would be static field.
Are there any specific cases in which one should preferred over the other or it's rather a matter of taste?