최근 하스켈에서 가져 와서 Java로 변환하는 몇 가지 기능을 작성했습니다. 내가 가진 주요 문제 중 하나는 제네릭 형식으로 정적 속성을 쉽게 만들 수 없다는 것입니다. 약간의 예를 들어 설명해 드리겠습니다.정적 일반 매개 변수를 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;
}
}
이렇게 쉬운 방법이 있습니까? 사용하는 구문이 유효 할 경우 어떤 종류의 문제가 발생할 수 있습니까?
여기에서는 런타임에 유형 정보가 필요하지 않습니다. – Kru
사실,하지만 자바 컴파일러의 관점에서 보면 "public static T foo = new T()"를 시도하는 것과 비슷하다고 생각합니다. 이는 형식 지움으로 인해 가능하지 않습니다 ("public static foo = new Object() "... 분명히 옳지 않다). – BCunningham