import org.json.*;
import org.json.JSONObject;

import java.util.Iterator;

/**
 * Created by nubuntu on 10/06/2015.
 */
public class Object {
    private Callback callback;
    static void each(JSONObject json,Callback callback){
        Iterator<?> keys = json.keys();
        while( keys.hasNext() ) {
            String key = (String)keys.next();
            try {
                callback.run(key,json.get(key));
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }
    static void each(JSONArray json,Callback callback){
        for(int i=0;i<json.length();i++){
            JSONObject obj = null;
            try {
                obj = json.getJSONObject(i);
            } catch (JSONException e) {
                e.printStackTrace();
            }
            callback.run(obj);
        }
    }
    public interface Callback{
        public void run(String key, java.lang.Object o);
    }
    // Error : Duplicate Class
    public interface Callback{
        public void run(java.lang.Object o);
    }

}


我想为JSONObject和JSONArray实现类似jquery的“每个”,以后可能还会实现许多其他对象,
使用示例:

        JSONObject jsonobject= new JSONObject("hair":"black","eye":"blue");
        Object.each(jsonobject,new Object.Callback() {
            @Override
            public void run(String key, Object o) {
                Log.d(key,o.toString());
            }
        });


但是当我想创建第二个Callback时,它不能像上面的静态每个方法一样重复,
那么如何处理每个动态类型呢?

最佳答案

在android的情况下,如果您进行如下更改,我认为您的代码将可用:

 public interface Callback{
    public void run(String key, java.lang.Object o);
    public void run(java.lang.Object o);
}


您的each函数出错是因为您的Callback接口而不是它本身。

关于java - Java动态类型如何?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30750135/

10-12 01:38