récemment j'écris quelques fonctions que je prends de Haskell et traduisons en Java. L'un des principaux problèmes que j'ai est que je ne peux pas facilement créer une propriété statique avec un type générique. Laissez-moi vous expliquer par un petit exemple ...Existe-t-il une bonne façon d'avoir des paramètres génériques statiques Java?
// An interface to implement functions
public interface Func<P, R> {
public R apply(P p);
}
// What I want to do... (incorrect in Java)
public class ... {
public static <T> Func<T, T> identity = new Func<T, T>() {
public T apply(T p) { return p; }
}
}
// What I do right now
public class ... {
private static Func<Object, Object> identity = new Func<Object, Object>() {
public Object apply(Object p) { return p; }
}
@SuppressWarnings("unchecked")
public static <T> Func<T, T> getIdentity() {
return (Func<T, T>)identity;
}
}
Y a-t-il des façons plus simples de faire quelque chose comme ça? Quels types de problèmes peuvent survenir si la syntaxe utilisée est valide?
Ici, il n'est pas nécessaire d'avoir des informations de type lors de l'exécution. – Kru
Vrai, mais je pense que du point de vue du compilateur Java, c'est comme essayer de faire "public static T foo = new T()" ce qui n'est pas possible en raison du type effacement (qui serait traduit par "public static foo = new Object() "... ce qui n'est certainement pas juste). – BCunningham