以下のコードは、Listを内容のクラスの名前の配列にして返すという内容です。
List内の型に関係なく実行できるコードであるため、一見正しいように見えますが、このコードはコンパイルできません。
String[] toNameArray(List list) { return list.stream().map(it -> it.getClass().getName()).toArray(String[]::new); }
対処
以下のように、ジェネリクスで「何でも取る」ということを明示すれば解決できます。
String[] toNameArray(List<?> list) { return list.stream().map(it -> it.getClass().getName()).toArray(String[]::new); }