2011-09-27 118 views
1

我對Java很新,我正在完成使用它的第一個項目。基本上我讀了Head First Java和我迄今使用的類的API文檔。這是我的Java背景。實時方法覆蓋

這段小小的代碼對我產生了很大的疑惑,基本上,這個說法是什麼意思?

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不知道什麼是匿名內部類,那麼這裏的OP應該如何定位另一個問題呢? – Dan

+0

其實你是對的,這是重複的。我只是不知道該代碼片段所表示的概念的名稱。如有必要,請關閉它。謝謝! – romeroqj

回答

3

你碰到的是一個匿名內部類。 Java中有很多種嵌套類,這對你熟悉所有這些都是有益的。我將一篇教程鏈接作爲一個很好的起點。祝你好運!

Nested Classes in Java

+0

不錯!非常感謝你,我不知道該找什麼。 – romeroqj

+0

沒問題,祝你好運。 – Perception

2

這就是所謂的匿名內部類。這將創建一個FileDataSource的子類,並調用超級構造函數FileDataSource(tiffFile),其中getContentType()方法將被重寫。

它可以如下重寫:

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

DataSource dataSource = new TiffFileSource(tiffFile);