实时方法覆盖

时间:2011-09-27 04:04:10

标签: java code-snippets

我是Java的新手,我正在完成我的第一个使用它的项目。基本上我读了Head First Java和我迄今为止使用过的类的API文档。这是我的Java背景。

这段代码对我有点怀疑,基本上,这句话是什么意思?

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

它是否像“实时方法覆盖”?我仍然没有得到那些括号在那里做的事情。

我真的很感谢你对这个问题的帮助。

干杯。

2 个答案:

答案 0 :(得分:3)

你遇到的是一个匿名的内部类。 Java中有很多种嵌套类,熟悉它们对你有好处。我将教程链接作为一个很好的起点。祝你好运!

Nested Classes in Java

答案 1 :(得分: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);