2014-03-13 1 views
0

Java Reflection을 사용하여 다른 유형의 객체를 초기화하고 있습니다. 이 모든 객체는 같은 방식으로 구성됩니다 (즉, 같은 값으로 전달됩니다). 나는 공장을 가지고 클래스를 필요로하는 인터페이스를 정의 할 수 없습니다클래스가 삽입 가능한지 확인하는 방법

if (Foo.class.isAssignableFrom(field.getType()) 
    return new Foo(values); 
else if (Bar.class.isAssignableFrom(field.getType()) 
    return new Bar(values); 
else if...//Continue over and over 

:

따라서, 내 인젝터는 각 필드를 통해보고, 다음과 같이 긴 경우/다른 문을 수행 왜냐하면 공장은 본질적으로 정적이기 때문입니다. 추상 클래스를 확장하는 경우에도 마찬가지입니다.

인가가/else 문이 너무 내 주입 클래스는이 같은 values?

+0

스프링 소스 코드를 보았습니까? 이것은 기존의 오픈 소스 프로젝트에서 이미 해결 된 문제이며 코드를 포크하고 다시 사용할 수 있습니다. – mttdbrd

+0

예, 실제로 스프링을 사용합니다. 나는이 상황에서 그것을 사용할 생각조차하지 못했다. 이것은 내가 실제로 찾고있는 것입니다. 답변 게시 및 동의 함 @mttdbrd –

+0

좋아요! 고맙습니다. – mttdbrd

답변

1

요청하신대로 :

스프링 소스 코드를 살펴 보셨습니까? 이것은 기존의 오픈 소스 프로젝트에서 이미 해결 된 문제이며 코드를 포크하고 다시 사용할 수 있습니다.

0

사용 무언가로 구성 될 수 있다는 사실 외에 (주입 필요가 클래스에 대해 아무 생각이없는 경우 I 위를 제거 할 수있는 방법 () 안된 :

private <T> T newInstance(Class<T> type){ 
    Constructor<T> constructor = type.getConstructor(valueTypes); 
    return constructor.newInstance(values) 
} 

이어서 호출한다.

value 형이 값의 종류
Object obj = newInstance(field.getType()); 

관련 문제