我试图扩展 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/