Referências de métodos para tipos brutos prejudiciais?

O código abaixo contém uma referência paraEnum::name (observe nenhum parâmetro de tipo).

public static <T extends Enum<T>> ColumnType<T, String> enumColumn(Class<T> klazz) {
    return simpleColumn((row, label) -> valueOf(klazz, row.getString(label)), Enum::name);
}

public static <T, R> ColumnType<T, R> simpleColumn(BiFunction<JsonObject, String, T> readFromJson,
        Function<T, R> writeToDb) {
 // ...
}

Javac relata um aviso durante a compilação:

[WARNING] encontrado tipo bruto: java.lang.Enum argumentos de tipo ausentes para a classe genérica java.lang.Enum

Alterando a expressão paraEnum<T>::name faz com que o aviso desapareça.

No entanto, a Idea sinaliza oEnum<T>::name versão com um aviso de que:

Argumentos de tipo explícito podem ser inferidos

Por sua vez, o Eclipse (ECJ) não relata nenhum problema com qualquer formulação.

Qual das três abordagens está correta?

Por um lado, os tipos brutos são bastante desagradáveis. Se você tentar colocar outro argumento de tipo, por exemplo,Enum<Clause>::name fará com que a compilação falhe, por isso é uma proteção extra.

Por outro lado, a referência acima é equivalente ae -> e.name() lambda, e essa formulação não requer argumentos de tipo.

Ambiente:

Java 8u91Comunidade IDEA 15.0.3TJCE 4.5.2

questionAnswers(1)

yourAnswerToTheQuestion