File: AnnotationMirrorToString.md

package info (click to toggle)
error-prone-java 2.18.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 23,204 kB
  • sloc: java: 222,992; xml: 1,319; sh: 25; makefile: 7
file content (28 lines) | stat: -rw-r--r-- 1,005 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
In [recent versions of javac](https://bugs.openjdk.java.net/browse/JDK-8268729),
`AnnotationMirror#toString` returns a string representation of the annotation
that uses simple names. If the string is used in generated source code, it may
require additional imports.

For example, instead of this:

```
@com.pkg.Foo(bar = com.pkg.Bar.class, baz = com.pkg.Baz.ONE)
```

javac now generates the following:

```
@Foo(bar = Bar.class, baz = Baz.ONE)
```

which may require imports for `com.pkg.Foo`.

`auto-common`'s `AnnotationMirrors#toString` method produces a string that uses
fully qualified names for annotations, class literals, and enum constants,
ensuring that source code containing that string will compile without additional
imports.

TIP: `AnnotationMirrors#toString` may be beneficial even if the string isn't
being used in generated code, e.g. if it's part of a diagnostic message or
assertion failure message, since the fully qualified names makes it clearer
which types are being referred to.