@SuppressWarnings("unchecked")
    public static <T> T[] array_range(T start, T end, int... step) {
        int s = (step.length == 0) ? 1 : step[0];
        int L;
        if (start instanceof Integer & end instanceof Integer) { // 全数字
            L = Math.abs(((Integer) start - (Integer) end - 1)) / s;
            Integer[] rs = J2P_Array_Factory(Integer.class, L);
            for (int i = 0, v = Math.min((Integer) start, (Integer) end); i < L; i++, v += s) {
                rs[i] = v;
            }
            return (T[]) rs;
        } else if (start instanceof Character ^ end instanceof Character) { // 混合字符数字
            /**
             * 太烦躁,不写了 // 伪代码 顶针 a = 10 -> z = 35 p1 在区间10,35左边
             * P1在[10,35]之间->映射到字符 p1 在区间10,35右边 p1在参数1 p1在参数2 回文 联接结果集 done
             */
        } else if (start instanceof Character & end instanceof Character) {// 全字符
            /** a = 10 b = 11 ... z=35 板拇指数了一下 英文字母的确是26个！今天唯一的收获 */
            int boundry_L = Character.getNumericValue((Character) start);
            int boundry_R = Character.getNumericValue((Character) end);
            boolean need2rev = false;
            // 如果参数1大于参数2 z....a 重写置换区间
 
            if (boundry_R <= boundry_L) {
                need2rev = true;
                // 如果需要回文显示 如 z-b z,y,x,w,...d,e,b 回调回文方法并打印
                int temp = boundry_L;
                boundry_L = boundry_R;
                boundry_R = temp;
            }
            Character value = Character
                    .forDigit(boundry_L, Character.MAX_RADIX);
            L = (boundry_R - boundry_L + 1) / s;
            Character[] rs = J2P_Array_Factory(Character.class, L);
            // fill the data array
            for (int i = 0; i < rs.length; i++) {
                rs[i] = value;
                value = Character.forDigit((boundry_L += s),
                        Character.MAX_RADIX);
            }
            if (need2rev)
                reverseString(rs);
            return (T[]) rs;
        } else {
            L = 0;
            System.out.println("不支持的类型");
            System.exit(0);
            throw new RuntimeException();
        }
        return null;
    }