2011-09-27 2 views
1

저는 Java에 익숙하지 않고 그것을 사용하는 첫 번째 프로젝트를 마무리하고 있습니다. 기본적으로 Head First Java와 지금까지 사용해 왔던 클래스의 API 문서를 읽었습니다. 저의 자바 배경입니다.라이브 메서드 오버라이드

이 작은 코드는 나에게 큰 의문을 불러 일으켰습니다. 기본적으로이 문장은 무엇을 의미합니까?

DataSource dataSource = new FileDataSource(tiffFile) { 
    public String getContentType() { 
     return "image/tiff"; 
    } 
}; 

"라이브 메소드 오버라이드"와 비슷합니까? 나는 아직도 그 괄호가 거기에서하고있는 것을 얻지 않는다.

정말 고맙겠습니다.

건배.

+0

가능 중복 [선언 익명 내부 클래스 (http://stackoverflow.com/questions/5511864/declaring-anonymous-inner-class) – Thilo

+0

@Thilo 동의하지 않는다. 연결된 질문은 구문에 대한 설명을 요구하고 있습니다. 이 질문은 주어진 구문이 무엇인지 묻는 것입니다. 익명의 내부 클래스가 아직 무엇인지 모르는 경우 OP는 어떻게 다른 질문을 찾았습니까? – Dan

+0

사실 당신 말이 맞습니다. 이것은 복제본입니다. 그 코드 스 니펫이 나타내는 개념의 이름을 알지 못했습니다. 필요한 경우 닫으십시오. 감사! – romeroqj

답변

3

당신이 횡단 한 것은 익명 내부 클래스입니다. Java에는 여러 종류의 중첩 클래스가 있으며 모든 클래스에 익숙해지는 것이 좋습니다. 좋은 출발점으로 튜토리얼에 대한 링크를 포함하고 있습니다. 행운을 빕니다!

Nested Classes in Java

+0

좋은 소식! 정말 고마워. 내가 뭘 찾아야할지 몰랐어. – romeroqj

+0

문제 없습니다, 행운을 빕니다. – Perception

2

은 그것은 익명의 내부 클래스라고합니다. 이 경우_메서드가 재정의되는 슈퍼 생성자 FileDataSource(tiffFile)을 호출하여 FileDataSource의 하위 클래스가 만들어집니다.

다음과 같이 다시 쓸 수있다 :

public static class TiffFileSource extends FileDataSource { 
    public TiffFileSource(File file){ 
     super(file); 
    } 
    public String getContentType() { 
     return "image/tiff"; 
    } 
} 

DataSource dataSource = new TiffFileSource(tiffFile); 
관련 문제