В последнее время я пишу некоторые функции, которые я использую в Haskell и перевожу на 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;
}
}
Есть ли более простые способы сделать что-то подобное?Какие проблемы могут возникнуть, если синтаксис, который я использовал, будет действительным?