型パラメータを引数の型に持つメソッドのオーバーロード

後で調べるためにメモ (あ、かわりに調べておいてくれても全然問題ないです)。

// これはエラー
public static <L extends List<String> & RandomAccess>
String join(L strs, String separator) { ... }

public static String join(List<String> strs, String separator) { ... }
// 制約の順番を入れ替えると上手くいく
public static <L extends RandomAccess & List<String>>
String join(L strs, String separator) { ... }

public static String join(List<String> strs, String separator) { ... }

今まで、Java では型パラメータは単純に Object になるものだと思っていたんだけど、もしかして extends 使うと一番左側のクラスになる・・・?