2013-06-04 4 views
0

클래스에 다음과 같은 메서드가 있습니다. AbstractModel은이 클래스를 확장하는 클래스에 의해 전달되는 제네릭입니다. 이 방법은 현재 전달 된 클래스의 인스턴스를 생성 전달 된 클래스의 인스턴스를 반환하는 제네릭 메서드를 만듭니다.

public AbstractModel newInstance(Class<? extends AbstractModel> clazz){ 

    return injector.getInstance(clazz); 
} 

은 현재 내가이 작업을 수행 할 수 있습니다.

Person person = (Person) em.newInstance(Person.class); 

내가 가지고있는 캐스팅을 제거하기 위해 제네릭을 사용할 수 있는지 궁금하네요 AbstractModel 객체를 Person으로 만드는 작업. 이상적으로는 다음과 같습니다 :

저는 Person 객체를 메서드에 전달하지 않기 때문에 이것이 가능한지 알 수 없습니다.

답변

3

당신은 다음에 메소드 서명을 변경할 수 있습니다 -

public <T extends AstractModel> T newInstance(Class<T> clazz) { 
+0

최고. 감사! – David

+0

당신은 오신 것을 환영합니다. –

+0

은 당근에있는 부분으로, 매개 변수로 메소드에 들어가야하고, 그 다음에 다른 클래스 인 T가 반환되는 클래스입니까? – David

관련 문제