我想根据用户的偏好将数组中的一系列对象转换为不同的类型.
是否可以从数组引用原始类型进行转换?
public void MakeByteBuffer(float x, float y, float z) {
xyz[0] = x;
xyz[1] = y;
xyz[2] = z;
byteBufferSend.rewind();
for (int i = 0; i < whatToSendVarArray.length; i++) {
switch (whatToSendTypeArray[whatToSendVarArray[i]]) {
case 0:// byte
byteBufferSend.put((byte) xyz[whatToSendVarArray[i]]);
break;
case 1:// short
byteBufferSend
.putShort((short) xyz[whatToSendVarArray[i]]);
break;
case 2:// int
byteBufferSend
.putInt((int) xyz[whatToSendVarArray[i]]);
break;
// Plus more types...
}
byteArrayDataToSend = byteBufferSend.array();
}
}
理想情况下,我想要:
typeArray={byte,short,int,long,float,double};
byteBufferSend.put???((typeArray[i]) xyz[whatToSendVarArray[i]]);
最佳做法是什么?
最佳答案
Is it possible to reference primitive-types from an array for casting?
没有.
在Java中,您不能将一个原始类型的数组当作另一种原始类型的数组来对待.因此,无论xyz数组的基本类型是什么,这都是查看元素的唯一方法.
最好的办法是提取一个元素,然后显式转换它.
(我认为反射对您无济于事,因为反射API不会进行基本类型的转换.)
What is the best practice?
最好避免这种低级别的东西.但是,如果必须这样做,请接受这样的事实,即代码不可避免地会有些笨拙.
因此,最佳实践是将笨拙的行为隐藏在方法内部,这样您就不必在整个代码中都做这种事情.