MethodDescription.SignatureToken should contains modifier
because of after 1.5 , compiler will generate bridge method for generic erasure , some time bridge method and the origin method has same method parameter and return type
class Demo<A extends Demo> {
public A foo{
return null;
}
}
class DemoB<B extends Demo> extends Demo<B> {
public A foo{
return null;
}
}
will throw IllegalStateException Duplicate method signature for xxx
Not sure I follow. Could you adjust your example code such that it compiles?
ohhh sorry , i make a mistake . this code can't reproduct that.
the really problem is io.grpc.internal.AbstractManagedChannelImplBuilder class in gprc-core after release 1.36.0 .
you can do anything on this class, and will throw IllegalStateException Duplicate method signature for xxx
beacuse of them team has some ' class hack ' in build step Rewrite builder class signatures to avoid internal
java.lang.IllegalStateException: Duplicate method signature for public io.grpc.ManagedChannelBuilder io.grpc.internal.AbstractManagedChannelImplBuilder.disableServiceConfigLookUp()
at net.bytebuddy.dynamic.scaffold.InstrumentedType$Default.validated(InstrumentedType.java:1611)
at net.bytebuddy.dynamic.scaffold.MethodRegistry$Default.prepare(MethodRegistry.java:519)
at net.bytebuddy.dynamic.scaffold.inline.RebaseDynamicTypeBuilder.make(RebaseDynamicTypeBuilder.java:221)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.doTransform(AgentBuilder.java:10438)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.transform(AgentBuilder.java:10374)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.access$1600(AgentBuilder.java:10140)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer$Java9CapableVmDispatcher.run(AgentBuilder.java:10833)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer$Java9CapableVmDispatcher.run(AgentBuilder.java:10771)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.transform(AgentBuilder.java:10330)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer$ByteBuddy$ModuleSupport.transform(Unknown Source)
at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:563)
You cannot have two methods with the same signature, even if the modifier is different, if that is the question?