最近我正在编写一些从 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;
}
}
有没有更简单的方法来做这样的事情?如果我使用的语法有效,可能会出现什么样的问题?