Java无法扩展ByteBuffer类

标签 java abstract-class bytebuffer

我试图扩展 ByteBuffer 类以向其添加“getString”方法。但我就是无法让它发挥作用。

我的类也是抽象的。当我扩展它时,我看到一个错误“java.nio.ByteBuffer 中没有可用的默认构造函数”。而我think我明白为什么会发生这种情况,因为 ByteBuffer 类中没有公共(public)构造函数。

那么我该如何扩展它呢?如何为其添加功能?

最佳答案

您无法扩展ByteBuffer。虽然它不是最终类,但它的所有构造函数都是包私有(private)的,这意味着它只能由同一包(java.nio)中的类扩展。原因是子类的所有构造函数总是需要调用父类(super class)的一个构造函数,而您的类不允许调用其中任何一个。

如果你想要一个特殊的缓冲区,你需要直接扩展Buffer,尽管我不推荐这样做。相反,最适合您的解决方案可能是编写一个包装类,将您需要的方法委托(delegate)给 ByteBuffer 实例,或者只是将您的 getString 方法放在另一个类中。

关于Java无法扩展ByteBuffer类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26577827/

相关文章:

java - 在Java中打印数组的内容

java - 如何实现图像对象的java模板方法设计模式 : BufferedImage, Image, ImageIcon

java - 用于存储来自文件输入 Java 的动态大小的 block 的最佳数据结构

java - 使类抽象的主要优点是什么

java - 如何检查抽象对象的实例是否属于特定的子类

java - ByteBuffer的初始 "mode"是什么?

java - 解码为字符串时 ByteBuffer 丢失数据

java - 为什么列表优于队列?

java - 排除外部依赖项中所需的库

java - 关于按引用或值传递的概念