@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 © 2013. All rights reserved.