2012-05-16 2 views
1

어느 인터페이스를 존재도 추상 클래스는 (How can I force a Constructor to be defined in all subclass of my abstract class 참조) 이제(자바) 만들기 특정 생성자 플러그인 공장에 대한

구현하는 서브 클래스에 생성자의 종류를 지시 할 수 있는지 나는 많은 서브 클래스에 의해 구현되는 인터페이스 . 프로그램은 리플렉션을 통해 런타임에 이러한 하위 클래스를 찾습니다.
예를 들어 see here을 인스턴스화하는 플러그인 팩토리가 필요합니다.

모든 예제는 모든 하위 클래스에 특정 유형의 생성자 (예 : 인수 없음)가 있다고 가정합니다. 그러나 나는 이것에 대해 정말로 확신 할 수 없다. 런타임 오류를 피하기 위해 하위 생성자에 특정 생성자를 적용 할 수 없으므로 어떻게해야합니까?

감사합니다.

답변

2

반사를 사용하기 때문에 getConstructor(java.lang.Class...) (죄송합니다. JavaDoc 메소드에 대한 링크를 붙여 넣을 수 없음)을 사용하여 ctor가 있는지 확인하고, 그렇다면 특정 인수로 호출하십시오.

+0

그래, 그게 내가 지금하고있는 일이야. 그러나 그러한 생성자가 지정되지 않은 경우에는 무엇을해야 하나 예외를 throw합니까? 즉, no-args 생성자가 필요하고 모든 리플렉션이 인수를 가진 생성자라는 것을 알았다면 솔직히 공장에서해야 할 일을 알지 못했지만 충돌이 발생했습니다. – CarrKnight

+0

예, 충돌이 발생하거나 오히려 예외가 발생합니다 . 이들은 리플렉션 사용의 절충 사항입니다. –