Java SE JSR 250 annotations module renamed to

Guillaume Smet guillaume at
Mon Feb 13 16:58:13 UTC 2017

On Mon, Feb 13, 2017 at 5:12 PM, Alan Bateman <Alan.Bateman at>

> I agree that @Generated is awkward but I haven't suggested removing it.

What do you suggest then? As far as I understood you, you were suggesting
removing the module in Java 10 so the @Generated annotation would also be
gone? Or did I misunderstand?

> It would be useful to go through a few examples as it may be that
> ACC_SYNTHETIC is more appropriate for some of these cases.

Not really.


Quote from the doc: "A class may be marked with the ACC_SYNTHETIC flag to
indicate that it was generated by a compiler and does not appear in source

== @Generated

>From the javadoc:

 * The Generated annotation is used to mark source code that has been
 * It can also be used to differentiate user written code from generated
 * in a single file. When used, the value element must have the name of the
 * code generator. The recommended convention is to use the fully qualified
 * name of the code generator in the value field .

In our case, the class is not generated by the compiler and it does appear
in the source code. So it's really @Generated that we want. It's a way to
document which code generator has generated the code and when. It has been
created for exactly this purpose.

Here are a couple of projects using it:
- QueryDSL
- JBoss Logging
- jOOQ
- Bindgen

And, for instance, there are static analyzers which rely on it: e.g. with, classes marked with @Generated do
not report warnings.

This is from a 2 minutes search on the Internet and from tools used during
my career. There are a lot more out there.


More information about the jigsaw-dev mailing list