为什么在apache commons csv库中将类声明为final

时间:2015-11-01 16:11:51

标签: java csv apache-commons-csv

Apache commons CSV Parser类抛出异常

  

"在封装令牌完成之前达到了EOF"

表示伪代码

CSVParser csvParser = CSVParser.parse(fileChunkString, CSVFormat.DEFAULT);

错误的原因是我的CSV文件是以块的形式解析的,即我没有立即传递整个文件内容,但是,它的一大块,并且错误是有意义的,因为不能保证会遇到关闭令牌

示例的字符串可以是a1,b1,c1,d1,e1,f1\na,b,"csdsds,,因为您看到第2行中缺少结束引号。

我想修改库源代码以记住最后一行并将其与下一个文件内容块合并,例如:下一个块可能是dfdfd",a,c所以我的内容变为a,b,"csdsds,dfdfd",a,c

通过源代码我看到的第一步是我需要扩展Lexer.java并重写方法,因为这个类抛出了上面的EOF异常,并且还扩展了CSVParser.java

但问题是,这些类被声明为final,我无法扩展它们。我想理解为什么这些类被声明为final?

1 个答案:

答案 0 :(得分:3)

  

但是,问题是,这些类被声明为final,而我不能   扩展它们。我想了解为什么这些类被声明为   最后?

类是final的主要原因或字段是受限制的可见性,这样Apache可以对类进行内部更改,而不必担心用户扩展或访问这些内部部分。只要课程不是最终的,您就必须将所有protected字段视为公开的API。

在你的情况下,我会在commons-developer邮件列表中提出问题,看看可以做些什么。 Commons CSV目前正处于快速发展阶段。