단일 요소 (이 경우 메서드)에 동일한 유형의 두 개 이상의 주석을 슬랩하려고합니다. 작업중인 대략적인 코드는 다음과 같습니다.
public class Dupe {
public @interface Foo {
String bar();
}
@Foo(bar="one")
@Foo(bar="two")
public void haha() {}
}
위를 컴파일 할 때 javac는 중복 주석에 대해 불평합니다.
max @ upsight : ~ / work / daybreak $ javac Dupe.java Dupe.java:5 : 중복 주석
이와 같은 주석을 반복 할 수 없습니까? 간절히 말하면 위의 @Foo 두 인스턴스는 내용이 다르기 때문에 다르지 않습니까?
위의 방법이 가능하지 않은 경우 잠재적 인 해결 방법은 무엇입니까?
업데이트 : 내 사용 사례를 설명하라는 요청을 받았습니다. 여기 있습니다.
저는 POJO를 MongoDB와 같은 문서 저장소에 "매핑"하는 구문 설탕 메커니즘을 구축하고 있습니다. getter 또는 setter에 대한 주석으로 인덱스를 지정하도록 허용하고 싶습니다. 다음은 인위적인 예입니다.
public class Employee {
private List<Project> projects;
@Index(expr = "project.client_id")
@Index(expr = "project.start_date")
public List<Project> getProjects() { return projects; }
}
당연히 Project의 다양한 속성별로 Employee의 인스턴스를 빠르게 찾을 수 있기를 바랍니다. 다른 expr () 값으로 @Index를 두 번 지정하거나 허용 된 답변에 지정된 접근 방식을 사용할 수 있습니다. Hibernate가이를 수행하고 해킹으로 간주되지는 않지만 적어도 단일 요소에 동일한 유형의 여러 주석을 허용하는 것이 여전히 타당하다고 생각합니다.