ワイルドカードとジェネリックメソッドの違いについて悩んでいます。

void func(List<?> a)
<T> void func(List<T> a)

上の二つのメソッドは、呼び出す側から見ればほぼ同じだと思うのですが、
この二つはどういうふうに使い分けるべきなのでしょうか?