解决方案 »

  1.   

    把else if 之前的代码贴出来看看。
      

  2.   

    public static void forEach(Object array, Consumer<?> action)
        {
            if (null != array)
            {
                Class<?> cls = array.getClass();
                if (cls.equals(byte[].class))
                {
                    FastArrayUtil.forEach(new byte[]{}, action);
                }
                else if (cls.equals(short[].class))
    没有什么特别的地方,我为了调试还特地new可一个byte[],但是最终调用的还是这个方法自己,也就是Object类型的
      

  3.   

    暂时怀疑是java8 的jvm或者javac问题,你用7或者以前版本试验一下,看还出现这个问题不。
    这个:
    b->
            {
                System.out.println(b.getClass().getName());
            }
    在8以前版本可以用匿名类替代。
      

  4.   

    if (cls.equals(byte[].class))
    {
        FastArrayUtil.forEach(new byte[]{}, action);
    }
    这里应该是(byte[]) array吧,怎么去创建一个新byte数组。。
      

  5.   

    这是调试改的,因为就算new一个byte调用的也是Object的那个