이것은 상당히 주관적인 질문 일 수도 있지만 그렇지 않을 수도 있습니다. 내 응용 프로그램에는 다른 시간에 사용자에게 표시되는 양식 모음이 있습니다. 각 양식은 자체적 인 클래스입니다. 일반적으로 사용자는 단추를 클릭하여 새 양식을 시작합니다.Java reflection 적합성
buildButton("button text", new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
showForm(new TasksForm(args...));
}
});
나는 시간이 수십을, 그리고 그것은 SelectionAdapter마다 시간을 확인하는 데 정말 성가신 :
내가이 버튼을 구축하는 편리한 기능을 가지고, 당신은 다음과 같이 호출.
buildButton("button text", TasksForm.class, args...);
인수 :
정말 내가 알 수있는 버튼에 필요한 모든는 클릭이고 어떤 인수 생성자를 제공 할 때의 인스턴스를, 그래서 내가 대신이 같은 전화 기능을 내장 무엇 클래스입니다 TasksForm을 정상적으로 인스턴스화하는 데 사용할 수있는 임의의 개체 목록입니다.
리플렉션을 사용하여 클래스에서 생성자를 가져 와서 인수 목록을 일치시키고 필요할 때 인스턴스를 작성합니다. 대부분의 경우, 생성자에 인수를 전혀 전달하지 않아도됩니다. 단점은 분명히 잘못된 인수 집합을 전달하는 경우 컴파일 타임에이를 감지 할 수 없기 때문에 런타임에 실패 할 경우 대화 상자가 표시된다는 것입니다. 그러나 정상적으로 실패하지는 않을 것이고 디버깅이 쉬운 경우 쉽게 디버깅 할 수 있습니다.
필자는 함수와 클래스 리터럴의 사용이 꽤 흔한 언어에서 왔기 때문에 이것이 훨씬 더 깨끗하다고 생각합니다. 그러나 당신이 평범한 자바 프로그래머라면, 이것이 당신을 놀라게 할 것입니까, 아니면 엄청난 SelectionAdapters를 스캔하지 않아도 될까요?
나는 반사와 함께 갈 것입니다. –