|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT |
@Retention(value=CLASS) @Target(value=METHOD) @Documented @Indexed public @interface WithBridgeMethods
Request that bridge methods of the same name and same arguments be generated with each specified type as the return type. This helps you maintain binary compatibility as you evolve your classes.
For example, if you have the following code:
@WithBridgeMethods(Foo.class) public FooSubType getFoo() { ... }
The Maven mojo will insert the following bridge method:
public Foo getFoo() { return getFoo(); // invokevirtual to getFoo() that returns FooSubType }
In some cases, it's necessary to widen the return type of a method, but in a way that legacy
calls would still return instances of the original type. In this case, add
castRequired=true
to the annotation. For example, if you have the
following code:
@WithBridgeMethods(value=FooSubType.class, castRequired=true) public <T extends Foo> createFoo(Class<T> clazz) { return clazz.newInstance(); }
The Maven mojo will insert the following bridge method:
public FooSubType createFoo(Class clazz) { return (FooSubType) createFoo(clazz); // invokeVirtual to createFoo that returns Foo }
Required Element Summary | |
---|---|
java.lang.Class<?>[] |
value
Specifies the return types. |
Optional Element Summary | |
---|---|
boolean |
castRequired
Specifies whether the injected bridge methods should perform a cast prior to returning. |
Element Detail |
---|
public abstract java.lang.Class<?>[] value
castRequired()
should be set to true.
public abstract boolean castRequired
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT |