我正在尝试创建一个在线从外部文件读取JSON的客户端库。我已经知道函数接口和选项,但我想知道是否有一种方法允许用户提供回调函数,以便父函数完全退出。对于JavaScript,这样的功能如下:
file.read('hello', function(err, data) {
// something here
});
基本上,我希望在Java中也这样做。我怎么能这样做,以便错误回调取代读取功能?我的意思是,如果调用错误回调,则read不应返回任何值。如果未调用回调,则read应返回值。
答案 0 :(得分:0)
在Java高达1.7中,实现像回调这样的javascript的唯一方法是通过接口。调用方法读取的api用户可以通过在调用点为接口编写实现类来自由地实现他需要做的事情来处理错误。
public String read(String options,IErrorCallBack errorHandler) throws Exception {
try {
// When everything works fine return what you think should be returned.
return "Success";
}
catch(Exception e) {
// On Error call the function on the error handler.
errorHandler.doSomething();
throw e;
}
}
public interface IErrorCallBack {
public void doSomething();
}
// The invocation point.
read("myString", new IErrorCallBack() {
public void doSomething() {
// Your implementation.
}
});
答案 1 :(得分:0)
如果没有错误,您可以让用户传入函数,然后不对其执行任何操作。
此示例假定您有一个名为Error
的自定义类,调用者知道并希望在发生错误时与之交互。
public void read (String str, Function<Error,Void> errorFunc)
{
//interact w/ libraries, boolean error = true or false
//if there is an error, variable err of type Error contains information
if (error)
{
errorFunc.apply(err);
}
}