2012-09-09 6 views
2

내가 타입 변수 난에 저장되어있는 기호 새로운 벡터 형식을 초기화 할 수있는 방법클로저에 유형이 어떻게 구성되어 있습니까?

(def ta java.util.Vector)

에 저장 한 경우?

예 : 생성자에 매개 변수를 사용하려면

(.newInstance ta) 
=> #<Vector []> 

당신은을 통해 갈 수 있습니다 : 당신은 그냥 직접 newInstance 방법을 사용할 수 있도록 (initialize ta params) =>#Vector <params>

답변

5

은 당신의 tajava.lang.Class의 인스턴스 같은 뭔가 getConstructor 방법 : 정확히 엄마에 필요에 따라이 있지만

(defn build-constructor [klass & types] 
    "Construct a new class instance dynamically at runtime" 
    (let [constructor (.getConstructor klass (into-array java.lang.Class types))] 
    (fn [& args] 
     (.newInstance constructor (object-array args))))) 

((build-constructor ta java.util.Collection) [1 2 3 4]) 
=> #<Vector [1, 2, 3, 4]> 

좀 더 가로장 설치 등등이 될 수 올바른 생성자를 얻기 위해 매개 변수 유형을 변경합니다. ...

관련 문제