Storable> void add(List<T> list1, List<T> list2) { Storable elem =list2.get(0); // 境界型パラメータを使っているので返り値はStorableになる if (elem.getId() != null){ list1.add(elem); //ワイルドカードでないので引数が型パラメータのメソッドも呼べる } } List<Storable> storableList; List<User> userList; add(storableList, storableList); // OK。T=Storable add(userList, userList); // OK。T=User add(storableList, userList); //Tの型が異なるためコンパイルエラー 24