Tout en suivant un cours Java, il m'a été demandé de convertir une classe régulière en une classe générique. Je pense que j'ai partiellement réussi, mais je peux trouver un moyen de l'obtenir à 100%.Java Generics non vérifié avertissement et la méthode ne peut pas être référencée à partir d'un contenu statique
public class ElementUtils {
public static <T> List transformedList(List<T> inList, Function<T, T> f) {
List<T> outList = new ArrayList<>();
for (T s : inList) {
outList.add(f.apply(s));
}
return outList;
}
}
test classe
public class Test {
public static void main(String[] args) {
List<String> lijst = Arrays.asList("Jan", "Jos", "Anna", "Pieter", "Johan");
List<String> upCaseList = ElementUtils.transformedList(lijst, String::toUpperCase);
List<String> replaceList = ElementUtils.transformedList(lijst, s -> s.replace("i", "IETS"));
List<String> exclList = ElementUtils.transformedList(lijst, s -> s + "!");
List<Integer> wordLengths = ElementUtils.transformedList(lijst, String::length);
System.out.println(upCaseList);
System.out.println(replaceList);
System.out.println(exclList);
System.out.println(wordLengths);
}
}
Lorsque je supprime la dernière instruction wordLengths
cela fonctionne bien, mais jette un avertissement. Avec la dernière déclaration, il est dit que je ne peux pas référencer une méthode à partir d'un contenu statique.
Erreur:
Error:(13, 49) java: method transformedList in class cvo.ex2.ElementUtils cannot be applied to given types;
required: java.util.List<T>,java.util.function.Function<T,T>
found: java.util.List<java.lang.String>,String::length
reason: inference variable T has incompatible bounds
equality constraints: java.lang.String
lower bounds: java.lang.Integer
Je ne comprends pas ce que je suis absent ici ... Merci pour votre aide.
Quel est le message exact? – Stultuske
OP mis à jour avec le message – DarkLite1
cela pourrait être en mesure d'aider: https://stackoverflow.com/questions/27522741/incompatible-types-inference-variable-t-has-incompatible-bounds – Stultuske