2014-09-21 1 views
0

을 생성하여 Object이 아닌 UnitBuilder 또는 SourceBuilder에 의존하게하려면 어떻게해야합니까?특정 엔티티 유형으로 팩토리를 어떻게 생성 할 수 있습니까?

public class BuilderFactory { 
    Object getBuilder (Object entity) throws UnsupportedResourceEntityType { 
     if (entity instanceof Source){ 
      return new SourceBuilder(); 
     } 
     if (entity instanceof Unit){ 
      return new UnitBuilder(); 
     } 
     throw new UnsupportedResourceEntityType(); 
    } 
} 
+0

을 (난 당신이 도스 두 개의 클래스를 일반적인 슈퍼를 유지 가정합니다 및 이러한 클래스는 기본 생성자를 가지고) 당신은 인수로 SourceBuilder.class 또는 UnitBuilder.class을 통과해야한다, 그래서 당신의 방법이 될 것이다 'SourceBuilder'와'UnitBuilder'? – Dici

+0

그러면이 일반적인 유형으로'Object'를 대체하지 않으시겠습니까? 또는이 공용 클래스에 의해 구현 된 인터페이스에 의해 더 좋습니다. – Dici

+0

예, 그렇지만 상위 클래스 (상위 클래스)는 제거 할 것입니다. – Alex

답변

0

클래스를 알기 위해 클래스의 인스턴스를 제공해야한다는 것은 거의 의미가 없습니다. 사이에 어떤 관계가 있습니까

<T extends SuperType> T getBuilder (Class<T> clazz) { 
    return clazz.newInstance(); 
} 
+0

아니요! 결과 클래스의 인스턴스를 제외하고는 getBuilder 메서드에 아무 것도 전달할 수 없습니다. – Alex

+0

실제로 Reflection API도 사용할 수 없습니다. – Alex

+0

왜 그런가요? – Dici

관련 문제