1.byte[]转ByteBuffer使用wrap方法就可以了,no direct ByteBuffer是什么原因?
一般直接可以转的
ByteBuffer.wrap(bytes)
然而接口接收处要求的也是java.nio.ByteBuffer,这就比较奇怪了。
经过一番研究后,ByeBuffer是一个抽象类,其还有一些其他子类,所以说接口参数要求为ByteBuffer没有问题。
那其实报这个错的原因就是转化后不是一个DirectByteBuffer对象,这是ByteBuffer子类。
因此,需要声明或者申请转化后的对象为DirectByteBuffer,那么:
ByteBuffer bb = ByteBuffer.allocateDirect(bytes.length); //申请为DirectByteBuffer
bb.wrap(bytes);
这样处理后就可以了。
2.有个比较难理解的概念:
子类可以赋值给父类
父类不能赋值给子类
3.我谈谈自己简单的理解:
首先:子类继承父类,子类有父类所有的属性和方法,但也有自己的属性和方法。这就相当于数学概念中的集合概念,子类是一个集合,父类是此集合的子集甚至是真子集。
那么:
子类给父类赋值就相当于:大集和包含子集
父类给子类赋值就相当于:子集包含大集合,此关系不成立。
或者理解:子类拥有父类的所有属性和方法,可以非常容易赋值。但是父类不包含子类的一些方法,因此它就不能给子类赋值。
当然,这些理解不够准确,欢迎指教。