2010-12-20 3 views
1
@Override 
public Class< ? extends Page> getHomePage() { 
      return HomePage.class; 
} 


public Class<HomePage> getHomePage(){ 
     return HomePage.class; 
} 

첫 번째 것은 주석 오버라이드가 있습니다. 그게 무슨 뜻입니까 아니면 프레임 워크에 무엇을 보냅니 까?"@Override"및 "<? extends Page>"의 의미는 무엇입니까?

두 메서드 모두 동일한 클래스를 반환합니다. 나는 이것이 ? extends Page을 의미하는 것을 의미합니다. 내 말은? 표.

답변

1

1) Override Annotation

자바 독은 : 방법 선언이 슈퍼 클래스의 메소드 선언을 오버라이드 (override)하는 것을 나타낸다. 메소드가이 주석 유형으로 주석을 달았지만 수퍼 클래스 메소드를 겹쳐 쓰지 않으면 컴파일러는 오류 메시지를 생성해야합니다.

2)? 모든 것을 의미합니다. 예 : <? > 여기에있는 자바 데이터 유형을 의미합니다.

<? extends Page>는 페이지의 모든 하위 클래스가 여기에 허용된다는 것을 의미합니다.

2
+0

링크와 함께 직접 일부 정보를 제공하는 것이 더 좋았을 것입니다. – Benjol

+1

RTFM과 같은 방법? – OrangeDog

2

@Override -

@Override 주석은 요소가 "인터페이스 (무시 방법이라는 제목의 공과에서 논의 될 것이다 슈퍼 클래스에 선언 된 요소를 무시하기위한 것입니다 컴파일러를 알려줍니다 상속 "). a wildcard :

또한

+1

이 부분을 조금 더 확장하면 IDE에서 실제로는 수퍼 클래스 또는 인터페이스에서 메서드를 재정의 (또는 구현하지 않음)한다는 깔끔한 밑줄 친 오류가 표시됩니다. 예를 들어, 오타 (getHomPage() 메서드 작성)는 오류 메시지를 표시하지 않고, getHomePage() 메서드가 실행되지 않는 것처럼 보이는 이상한 동작을 도와줍니다. – fwielstra

+0

@Cthulhu IDE는이 정보를 컴파일러에서만 가져오고 이것을'@ Override'의 실제 사용법으로 업데이트 된 답변을 확인합니다 –

2

그리고 두 번째 질문을 참조하십시오. ,

두 가지 방법합니다 (Class 인스턴스가 HomePage를 나타내는) 동일한 개체를 반환하지만, 그들은 와일드 카드 버전은 당신이 Page 어떤 종류의 상관하지 않는 방법으로 이용 될 수 있도록, 다른 방법으로 선언 서브 클래스가 Page 인 한.

관련 문제