当前位置: 首页 > 知识库问答 >
问题:

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

杜正奇
2023-03-14

对于伪代码

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

出现错误的原因是我的CSV文件是分块解析的,即我不是一次传递整个文件内容,而是传递其中的一个块,错误是有意义的,因为不能保证会遇到关闭令牌

例如,字符串可以是a1、b1、c1、d1、e1、f1\na、b、“csdsds、

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

共有1个答案

燕元明
2023-03-14

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

类是final或字段是受限可见性的主要原因是,通过这种方式,Apache可以对类进行内部更改,而不必担心用户扩展或访问这些内部部分。一旦一个类不是最终的,就必须将所有protected字段视为公开的API。

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

 类似资料:
  • 问题内容: 当我得知该类在Java中被声明为final时,我想知道为什么会这样。那时我没有找到任何答案,但是这篇文章:如何在Java中创建String类的副本?让我想起了我的疑问。 当然,String提供了我所需要的所有功能,而且我从未想过需要扩展String类的任何操作,但是您仍然永远不会知道有人可能需要什么! 那么,有谁知道设计师决定将其定稿时的意图是什么? 问题答案: 将字符串实现为不可变对

  • 问题内容: 为什么不能在Java中将类声明为静态类? 问题答案: 只有嵌套的类可以是静态的。这样,你可以使用嵌套类而无需外部类的实例。

  • 问题内容: 如果语言设计者仅使用Enum 会对语言产生怎样的影响? 现在唯一的区别是有人会写 A扩展 但由于Java中不允许扩展枚举,因此仍然是非法的。我也在考虑为jvm提供一个字节码,该字节码将smth定义为扩展枚举-但是泛型不会受到影响,因为它们都被删除了。 那么,声明的重点是什么? 谢谢! 编辑 为简单起见,让我们来看一个例子: 这个类结构有什么问题?限制可以做什么? 问题答案: 这是一个普

  • 问题内容: 我试图找到为什么不能将类创建为静态类的原因?喜欢: 问题答案: 在Java中,关键字通常将一个方法或字段标记为不存在,而不是每个类实例一次,而是一次。一个类一旦存在就已经存在,因此实际上,所有类都以这种方式是“静态的”,并且所有对象都是该类的实例。 确实对 内部 类具有含义,这是完全不同的:通常,内部类实例可以访问与其绑定的外部类实例的成员,但是如果内部类为,则它没有这样的引用并且可以

  • 问题内容: 这可能表明我缺乏Java理解,但是我想知道为什么在大多数MapReduce程序中,映射器和reducer类都声明为静态的? 问题答案: 当将mapper和reducer类声明为另一个类的内部类时,必须将它们声明为静态的,以便它们不依赖于父类。 Hadoop使用反射为每个映射创建该类的实例或减少运行的任务。创建的新实例需要一个零参数构造函数(否则它将如何知道要传递的内容)。 通过声明内部

  • 根据我的理解,类被声明为final,以防止它被扩展/继承。因此,我认为在这方面可能会有安全性,也可能会有一些性能提升。 但这背后是否有一个非常具体的设计决策?比如说:实现某种设计模式?我确实在这里绕了一个类似的线!但答案并不是我想要的