Java SE JSR 250 annotations module renamed to java.xml.ws.annotation?
Guillaume Smet
guillaume at hibernate.org
Mon Feb 13 16:58:13 UTC 2017
On Mon, Feb 13, 2017 at 5:12 PM, Alan Bateman <Alan.Bateman at oracle.com>
wrote:
> 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.
== ACC_SYNTHETIC
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
code."
== @Generated
>From the javadoc:
* The Generated annotation is used to mark source code that has been
generated.
* It can also be used to differentiate user written code from generated
code
* 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
- https://github.com/immutables/immutables
- https://thrift.apache.org/
- JBoss Logging
- jOOQ
- Bindgen
And, for instance, there are static analyzers which rely on it: e.g. with
https://github.com/google/error-prone, 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.
--
Guillaume
More information about the jigsaw-dev
mailing list