Java中Byte与byte可以一样用,在开发上没有明显区别。

解决方案 »

  1.   

    在JCreateor里编译
    ArrayList<Byte>能通过 ArrayList<byte>报错
    所以使用ArrayList<Byte>
    但在装为byte[]时出问题
    其中m_ByteArray 为ArrayList<Byte>
     public byte[] GetBuffer()
            {   
           
                byte[] m_RetByteArray = new byte[m_ByteArray.size()];
                Byte[] m_Bytes=(Byte[])m_ByteArray.toArray();
                for (int i = 0; i < m_ByteArray.size(); i++)
                    m_RetByteArray[i] = (byte)m_Bytes[i];
                return m_RetByteArray;
               
               
            }
    报错信息如下
    Exception in thread "Thread-0" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Byte;
    at NetShare.XNVarArray.GetBuffer(XNVarArray.java:469)
      

  2.   

    byte 和Byte是同一个东西吧,只是一个人的不同外号而已。
      

  3.   

    ArrayList等集合类里面只能装对象,不能存储基本数据类型。Byte是封装的对象,而byte是基本数据类型。所以ArrayLis<Byte> 是正确的。但是这样是可以的:byte a = 56;arrayList.add(a);自动装箱。
      

  4.   

    还是没回答实质问题Byte如何转为byte
      

  5.   

    ArrayList<Byte>m_Array=new ArrayList<Byte>;
    ....Byte[] m_Bytes=(Byte[])m_ByteArray.toArray();//这一步报错很奇怪
    Exception in thread "Thread-0" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Byte;
    at NetShare.XNVarArray.GetBuffer(XNVarArray.java:469)
      

  6.   

    楼上各种正解,另外,自动封装嘛,就不用想Byte如何转为byte 的了,一个类,一个8大原生类型。怎么转,是jvm的事情,不过你想想也应该可以想到
      

  7.   


    list.toArray完了是一个Object[]类型的,你现在是把Object[]类型转为Byte[]类型的报错,一直在纠结Byte如何转为byte这个问题干嘛?Byte.byteValue()就能够得到。
    看看把Object[]类型转为Byte[]类型这个问题怎么解决?
      

  8.   

    byte是基本数据类型,而Byte是把byte封装的类就跟int与Integer一样。
      

  9.   

    byte是基本数据类型,而Byte是把byte封装的类
    多看看JDK文档吧! ClassCastException 一般来说父类是不能转化为子类的, 因为子类由父类继承而来,子类有的父类不一定有,所以出错. 能问问题是好的 多问是好事.但是基本问题还是要自己多看看书.
      

  10.   

    貌似JDK 版本过低,就不能直接把Byte 当成byte 用,也是 会报错的。
      

  11.   


    楼主 
                 Byte[] m_Bytes=(Byte[])m_ByteArray.toArray();
     toArray 方法返回来的是Object 类型。Object自然是不能转为byte的 
      

  12.   

    byte b=new Byte((byte) 8);
    Byte不能作为引用行类型
    m_ByteArray.toArray();它的返回类型你知道是什么吗,返回的能强成Byte类型吗
    这应该是你要解决的问题
      

  13.   

    byte和Byte可以自动box/unbox. Byte[] 和 byte[] 不行
      

  14.   

    Byte[] m_Bytes=(Byte[])m_ByteArray.toArray();   这步有问题,报错信息“[Ljava.lang.Object; cannot be cast to [Ljava.lang.Byte;[Ljava.lang.Byte”,说明“Object”转“Byte”时出错。这样写试试:
      byte[] m_RetByteArray = new byte[m_ByteArray.size()];  for (int i = 0; i < m_ByteArray.size(); i++)
            m_RetByteArray[i] = (byte)m_ByteArray.get(i);
      return m_RetByteArray;
      

  15.   


    +1感觉java这点上面是比较坑。
      

  16.   


    楼主,错误的关键时红颜色部分。而不是你认为的Byte和byte之间的转换问题!
      

  17.   

    泛型不能为基本类型。其实没区别,你非要用byte的话。
    ArrayList<Byte>m_Array=new ArrayList<Byte>;
    byte b = m_Array.byteValue();
      

  18.   


    楼主,错误的关键时红颜色部分。而不是你认为的Byte和byte之间的转换问题!
    楼上说的很对,还有一句错了,改成下面这样就对了,LZ看看吧
    ArrayList<Byte> m_ByteArray = new ArrayList<Byte>();
    Object[] objs = m_ByteArray.toArray();
    byte[] m_Bytes = new byte[objs.length];
    for (int i = 0; i < m_Bytes.length; i++) {
    m_Bytes[i] = (Byte) objs[i];
    }
      

  19.   

    上面各楼层已给出问题缘由,及红色语句中不能将Object[]强转成Byte[]。
    我提供有助一个比较简便的方法将Object[]转为Byte[],至于之后是否转换为byte[],看楼主自己的需求。
    将红色语句改为下面的代码,就不必用循环逐个遍历了:     Byte[] m_Bytes= new Byte[m_ByteArray.size()];
         System.out.println(m_ByteArray.toArray(m_Bytes));
      

  20.   


    第二个验证代码应该改为:
         System.out.println(bs.length);
            //或者是
         System.out.println(Arrays.toString(bs));