public static void sort(
        Json[]       a,
        final String       orderField,    //增加final声明就可以
        final OrderType      orderType){
        
    if(a==null
     ||a.length>0
     ||orderField==null
     ||orderField.equals("")){
        return;
    }
    
    Arrays.sort(a,new Comparator<DataObject>(){
        public int compare(Json o1, Json o2) {
        //这里无法读取orderType和orderField
                //在这种情况下如何处理?
                //大家遇到这种情况如何解决     
        return 0;
        }            
    });         
}

解决方案 »

  1.   

    内部类读取外部类的属性或者变量,该变量必须定义为final类型才行。至于为什么,核心技术里面有讲解,也就是描述内部类的那一章。
      

  2.   

    非常感谢一楼的朋友,现在我对final关键字和内部类又有了进一步的了解
      

  3.   

    不用加final关键字也行啊
    可以像下面这样写:
    enum OrderType{
        asc,
        desc
    }    public static void sort(
            Json[]       a,
            String       orderField,
            OrderType      orderType){
            
        if(a==null
         ||a.length>0
         ||orderField==null
         ||orderField.equals("")){
            return;
        }
        class MyComparator<DataObject>(){
            public int compare(Json o1, Json o2) {
            //这里无法读取orderType和orderField
                    //在这种情况下如何处理?
                    //大家遇到这种情况如何解决     
            return 0;
            }            
        }      
        Arrays.sort(a,  new MyComparator<DataObject>());         
    }