클로저에 벡터가있는 자바 빈을 쉽게 생성 할 수있는 방법이 있는가? 예를 들어 다음과 같은 벡터를 주어진 :은 클로저로 java beans를 생성한다
[
String :key1
Integer :key2
]
나는이 같은 코드를 생성하는 데 싶습니다
상황에 대한public class NotSureWhatTheTypeWouldBeHere {
private String key1;
private Integer key2;
public NotSureWhatTheTypeWouldBeHere() {}
public NotSureWhatTheTypeWouldBeHere(String key1, Integer key2) {
this.key1 = key1;
this.key2 = key2;
}
public void setKey1(String key1) {
this.key1 = key1;
}
public String getKey1() {
return this.key1;
}
public void setKey2(Integer key2) {
this.key2 = key2;
}
public String getKey2() {
return this.key2;
}
// and equals,hashCode, toString, etc.
}
, 나는 자바로 작성된 응용 프로그램을 작성하고 싶습니다을하지만, clojure로 쓰여진 라이브러리를 호출합니다. 그래서 반환 값은 자바 빈이어야합니다 (나는 그들이 필요는 없다는 것을 알고 있지만 그것들을 원합니다). 한 가지 방법은 자바에서 모델을 정의한 다음 clojure의 일반적인 Java interop을 사용하여 클로저 코드로 모델을 채우는 것이지만 간결한 클로저 벡터 (또는 맵)를 (자세한 정보) 자바 빈으로 확장하는 아이디어를 좋아한다.
인터페이스 클래스로 java.util.Map을 사용하는 경우 +1. 나는 Strings를 키로 사용할 것을 제안한다. Clojure 측의 키워드와 마찬가지로 작동하지만 자바 API 사용자가 쉽게 접근 할 수있다 .... – mikera
이것은 아마도 옳은 대답이지만, 특히 자바 측에서지도를 원하지 않는다. 나는 서비스, dao, 그리고 일련의 모델 객체 인 자바 코드를 가지고있다. 나는 모델 객체가 동적으로 생성 될 수 있도록 clojure로 다시 작성할 수 있기를 바랬다. (따라서 코드 크기가 엄청나게 줄어들었다.) 그리고 클라이언트 관점에서, 코드는 원래 자바 코드와 다르지 않습니다. – Kevin
필자는 클라이언트 자바 코드 샘플에서 시작하여 원하는대로 시작한 다음 필요한 모든 케이스를 설명 할 수있는 공통 인터페이스를 찾고 Clojure에서 "reify"할 수 있도록하는 것이 좋습니다. 문제는 자바 측과 공통된 계약없이 즉석에서 자바 빈을 생성하려고 시도하는 것과 관련이있다. – skuro