@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 }
In extreme cases, this method can add a method whose return type has nothing to do with the return type of the declared method. For example, if you have the following code:
@WithBridgeMethods(value=String.class, adapterMethod="convert") public URL getURL() { URL url = .... return url; } private Object convert(URL url, Class targetType) { return url.toString(); }
The Maven mojo will insert the following bridge method:
public String getURL() { return (String)urlToString(getURL(),String.class); // invokeVirtual to getURL that returns URL }
The specified adapter method must be a method specified on the current class or its ancestors. It cannot be a static method.
Modifier and Type | Required Element and Description |
---|---|
Class<?>[] |
value
Specifies the return types.
|
Modifier and Type | Optional Element and Description |
---|---|
String |
adapterMethod
Specifies the method to convert return value.
|
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
public abstract String adapterMethod
Copyright © 2016. All rights reserved.