这两种方法等效吗?
public static <T extends com.google.protobuf.Message> Any pack(T message) {}
public static Any pack(com.google.protobuf.Message message) {}
我的理解是,在第一个函数中,T仅适用于该静态方法,不适用于其他静态方法或类。因此,它只是将输入参数限制为Message的子类型。是这样吗?如果是这样,这两种方法是否等效?
答案 0 :(得分:0)
是的,假设调用者未提供明确的类型见证者,则这两个签名是等效的。这是因为在没有类型见证人的情况下,两个签名都接受相同的参数集:
T
的实例,并且T
是Message
的子类型,因此该参数也必须是{{ 1}},并且被第二个签名接受Message
的实例,因此,如果选择Message
为T