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);
}
}
Я хочу реализовать «каждый», как JQuery для JSONObject & JSONArray, может быть много другого объекта позже, пример использования:Java Dynamic Type How To?
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());
}
});
, но когда я хочу создать второй обратный вызов, он не может дублировать как выше статического каждого метода, так как обращаться с каждым для динамического типа?
спасибо, можете ли вы предложить мне ссылку, чтобы узнать выражение Lamda? –
См. [Лямбда-выражения] (https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html). Есть стандартные интерфейсы, которые вы привыкли. 'BiConsumer' и 'Consumer