I have 2 interfaces, and 2 return types.
interface interfaceA {
Publisher<String> doSomething();
}
interface interfaceB extends interfaceA {
Flow<String> doSomething();
}
interface Publisher<T>{}
class Flow<T> implements Publisher<T>{}
So at runtime, I can see 2 methods of interfaceB.class.getMethods()
public default my.package.Publisher my.package.interfaceB.doSomething()public abstract my.package.Flow my.package.interfaceB.doSomething()
Regarding the first one, it is Synthetic. (method.getModifiers() & 0x00001000 > 0) == true
Does java autogenerate this synthetic methods?
How does it work in general?