解决方案 »

  1.   

    我的jdk是1.6.0_27
    刚刚试了下,没有报错 public static void main(String[] args) {
    ObjectsTest ot = new ObjectsTest();
    Object[] objects = new Object[2];
    ot.get(1, 1, 1, 1);

    ot.findByHql("ss", 1, 2, 2, "ee");
    }

    public void get(String str, Object...objects) {
    System.out.println("get(String str, Object...objects)");
    }

    public void get(Object...objects) {
    System.out.println("get(Object...objects)");
    }

    public String findByHql(String hql, int pageNo, int pageSize, Object ... values) {
    System.out.println("findByHql(String hql, int pageNo, int pageSize, Object ... values)");
    return null;
    }

     public List findByHql(String hql, Object ... values) {
     System.out.println("findByHql(String hql, Object ... values) ");
         return null;
     }
    可变参重载时,应该会根据给定的参数,先进行判断,如果有合适的方法,则优先选择该方法。
    如果没找到合适的,则进行变参处理。
    ot.findByHql("ss", 1, 2, 2, "ee"); 前三个参数类型同findByHql(String hql, int pageNo, int pageSize, Object ... values)  前三个参数类型正好匹配,应该就选择这个方法了。楼主说报错,看看自己的jdk小版本号是多少?是否是jdk本身对于变参处理有bug,后面修复了。
      

  2.   

    忘了给结果了 
    get(Object...objects)
    findByHql(String hql, int pageNo, int pageSize, Object ... values)
      

  3.   

    我改了下调用方式  new Test().findByHql("ss", 1, 2, 2, new Objec[]{"ee"});
     
      

  4.   

    谢谢 jdk我换了1.6.0_27
    那种方式依然报错,所以我换了调用 方式 谢谢