List等を宣言するとき
OK
ArrayList<String> stringList = new ArrayList<String>();
ArrayList<String> stringList = new ArrayList<>();
ArrayListはListを継承してるので代入可。
List<String> stringList = new ArrayLis<>t();
ジェネリクスは片方だけでも可。
ArrayList stringList = new ArrayList<String>();
NG
String型はObject型に代入できるので行けるかと思いきや、両辺に指定する場合は型を揃えないといけない。
ArrayList<Object> stringList = new ArrayList<String>();