posted 18 years ago
Notice that if you remove all but the last two methods, you still have a compile-time error.
According the JLS, the intuition is that one method is more specific than another if any invocation of it could be sent the other method without a compile-time error.
In this case, notice that there are parameters that you could send to one of these methods that could not be passed to the other.
Consider these pairs.
The first pair would be accepted by the second method (GFC211,GFC213), but it would not be accepted by (GFC212,GFC212) since a GFC211 is not a GFC212.
The second pair would be accepted by the first method (GFC212,GFC212), but it would not be accepted by (GFC211,GFC213) since a GFC212 is not a GFC213.