为什么 类 在 apache commons csv 库中声明为 final
why are classes declared as final in apache commons csv library
Apache commons CSV 解析器 class 抛出异常
"EOF reached before encapsulated token finished"
伪代码
CSVParser csvParser = CSVParser.parse(fileChunkString, CSVFormat.DEFAULT);
错误的原因是我的 CSV 文件被分块解析,即我没有一次传递整个文件内容,而是其中的一部分,并且错误是有道理的,因为不能保证结束标记遇到
例如,字符串可以是 a1,b1,c1,d1,e1,f1\na,b,"csdsds,
,如您所见,第二行中缺少右引号。
我想修改库源代码以记住最后一行并将其与文件内容的下一个块合并,例如:下一个块可以是 dfdfd",a,c
所以我的内容变成 a,b,"csdsds,dfdfd",a,c
查看源代码,我看到的第一步是我需要扩展 Lexer.java and override the method as this class is throwing the above EOF exception, and also extend CSVParser.java class
但是,问题是这些 classes 被声明为 final,我无法扩展它们。我想了解为什么这些 classes 被声明为 final?
But, the problem, is these classes are declared as final, and I can't
extend them. I want to understand why are these classes declared as
final?
classes 是 final 或字段可见性受限的主要原因是 Apache 可以通过这种方式对 classes 进行内部更改,而不必担心用户扩展或访问这些内部部分。一旦 class 不是最终的,您必须将所有 protected
字段视为公开的 API.
对于你的情况,我会在 commons-developer 邮件列表上提出这个问题,看看可以做些什么。 Commons CSV目前正在快速开发中。
Apache commons CSV 解析器 class 抛出异常
"EOF reached before encapsulated token finished"
伪代码
CSVParser csvParser = CSVParser.parse(fileChunkString, CSVFormat.DEFAULT);
错误的原因是我的 CSV 文件被分块解析,即我没有一次传递整个文件内容,而是其中的一部分,并且错误是有道理的,因为不能保证结束标记遇到
例如,字符串可以是 a1,b1,c1,d1,e1,f1\na,b,"csdsds,
,如您所见,第二行中缺少右引号。
我想修改库源代码以记住最后一行并将其与文件内容的下一个块合并,例如:下一个块可以是 dfdfd",a,c
所以我的内容变成 a,b,"csdsds,dfdfd",a,c
查看源代码,我看到的第一步是我需要扩展 Lexer.java and override the method as this class is throwing the above EOF exception, and also extend CSVParser.java class
但是,问题是这些 classes 被声明为 final,我无法扩展它们。我想了解为什么这些 classes 被声明为 final?
But, the problem, is these classes are declared as final, and I can't extend them. I want to understand why are these classes declared as final?
classes 是 final 或字段可见性受限的主要原因是 Apache 可以通过这种方式对 classes 进行内部更改,而不必担心用户扩展或访问这些内部部分。一旦 class 不是最终的,您必须将所有 protected
字段视为公开的 API.
对于你的情况,我会在 commons-developer 邮件列表上提出这个问题,看看可以做些什么。 Commons CSV目前正在快速开发中。