2011-11-21 1 views
3

저는 Java에 익숙하지 않으며 좀 더 알고 싶습니다. 나는 현재의 문제에 대해 답을하고 싶지만 그 기술이 무엇인지 알려주고 더 읽기를 할 수 있기를 바랍니다.Java 용어집

나는 현재 내가 가지고있는 서비스 방법합니다 ((내가이를 유지하기 위해 <을 얻는 방법 일을 couldnt)

public Class < ? extends BasicActivityExtension> getExtensionByActivity(BasicActivity  activity, 
     ExtensionTypes type) throws Exception { 
.... 
} 

를 무시에 그런 다음이

public class BasicActivityExtension 
{ 
public Boolean basicExtensionMethod(){} 
...} 

pubic class MyExtension extends BasicActivityExtension 
{public Boolean myExtensionMethod(){}...} 

같은 뭔가를 내 질문은이 오류의 원인과이 기술의 이름이 무엇인지 (정확하게했을 때!)

MyExtension members = (MyExtension) activityService.getExtensionByActivity(activity,   ExtensionTypes.member); 

오류는 입니다. 클래스에서 MyExtension으로 캐스트 할 수 없습니다.

또한 객체가있는 경우 <? extends BasicActivityExtension> BasicActivityExtension에서 제네릭 메서드를 어떤 클래스인지 신경 쓰지 않고 어떻게 호출 할 수 있습니까?

건배,

+0

'BasicActivityExtension'과'basicExtension'의 관계가 명확하지 않습니다. 명확히 해 주시겠습니까? 또한 'basicExtension'과 같은 클래스 이름은 대문자 여야합니다. – beny23

답변

3

당신이 클래스 객체가 아닌 클래스의 인스턴스이어야한다 Class를 지정할 때 당신이

<T extends BasicActivityExtension> 
public T getExtensionByActivity(BasicActivity activity, ExtensionTypes type) { 
.... 
} 

를 원하는 나타납니다.

현재 : 나는 맹목적으로 던지기를 피할 것입니다. Exception 확인 된 예외를 처리하는 더 좋은 방법이 있습니다.

+0

+1 체크 예외 지점 : – mprabhat

+1

그게 완벽하게 감사했습니다 :) – Rob

1

은 당신이하고있는 것은 캐스팅 이라고합니다.

getExtensionByActivity 메서드에서 Class 유형의 개체를 반환하기 때문에 문제가 발생합니다. 그러나 이것을 MyExtension 유형의 오브젝트에 3 스팅하려고합니다. 반환 유형 getExtensionByActivityClass에서 MyExtension으로 변경하여이 문제를 해결할 수 있습니다.

+0

건배, 내가 잘못 이해하고있는 곳을보기에 정말 유용했습니다. 클래스와 오브젝트는 너무 다르기는하지만, 서로 섞여서 환호했습니다. – Rob

1

Java 세계에 오신 것을 환영합니다. Java 1.5 진보 (C++ 템플릿과 유사) 시작은 Java에서 도입되었습니다. Generics here에 대한 자세한 내용을 볼 수 있습니다.

주어진 코드에서 basicExtenstionMyExtenstionActivity 사이의 관계가 명확하지 않습니다. 당신이 Program to an interface 패턴으로 소위 수행 할 필요가 BasicExtenstionActivity의 메소드를 호출하기 위해

,

코드는이 도움이

public Class<T extends BasicExtensionActivity> getBasicExtensionActivity(...) throws Exception. 

희망 같은 것을 보일 것입니다.

+0

여분의 독서를 주셔서 감사합니다, 이미 조금 더 운동하고 어떻게하는지 배울 수 있습니다. 건배, – Rob