@Retention(value=CLASS) @Target(value=METHOD) @Documented @Indexed public @interface WithBridgeMethods
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 }
Modifier and Type | Required Element and Description |
---|---|
Class<?>[] |
value
Specifies the return types.
|
Modifier and Type | Optional Element and Description |
---|---|
boolean |
castRequired
Specifies whether the injected bridge methods should perform a cast prior to returning.
|
public abstract Class<?>[] value
castRequired()
should be set to true.public abstract boolean castRequired
Copyright © 2014. All rights reserved.