如何扩展PrintWriter?

时间:2017-05-27 22:08:41

标签: java

我正在尝试创建一个扩展java.io.PrintWriter的类。因为PrintWriter没有无参数构造函数,所以我创建了一个,使用super()来调用父构造函数,并将路径作为参数。

public class PlotWriter extends PrintWriter {
    PlotWriter(String path) {
        try {
            super(path);
        } catch (FileNotFoundException ex) {
            //Exeption Handled
        } 
    }
}

编译器需要围绕super()进行异常处理。

但与此同时,它抱怨道:

Error:(14, 18) java: call to super must be first statement in constructor

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

你可以这样写:

public class PlotWriter extends PrintWriter {

    PlotWriter(String path) throws FileNotFoundException {
        super(path);
    }
}

异常应该由调用者处理,他们不打算在构造函数中处理。

public void someWhere() {
    try {
        PlotWriter pw = new PlotWriter(".../path/file");
    } catch (FileNotFoundException ex) {
        // handle exception here
    }
}

此外,构造函数中的第一个语句应始终为super(...);this(...);(如果您未指定任何此类调用,则会隐式调用super();)并且它们甚至不能两个人在一起。