我目前有一个扩展类Thread
。在那个类中,我得到一个网页的内容(这只是 JSON 数据)并解析它。这取决于我得到什么 JSON 对象,因为这决定了我采取什么行动或我必须显示什么视图。
但是我目前的做法是我在一个类中检查所有可能的 JSON 请求并基于该请求执行操作。
例如,我的班级看起来像这样:
public class Communicator extends Thread
{
Thread threadToInterrupt = null;
String URL = null;
public Houses ( String URL )
{
threadToInterrupt = Thread.currentThread();
setDaemon(true);
this.URL = URL;
}
public void run()
{
// Code to get the JSON from a web page
// Finally parse the result into a String
String page = sb.toString();
JSONObject jObject = new JSONObject(page);
if ( !jObject.isNull("house") )
{
// do alot of stuff
}
else if ( !jObject.isNull("somethingelse") )
{
// do alot of other stuff
}
}
}
正如你可以想象的那样,这个类很快就会被大量的 JSON 检查和代码弄得一团糟。感觉这不是正确的方法。
我想,也许最好传递一个被调用的回调方法?这样我就可以将我的课程改为这样的:
public class Communicator extends Thread
{
Thread threadToInterrupt = null;
String URL = null;
public Houses ( String URL, String JsonString, object CallbackMethod )
{
// ... code
}
public void run()
{
// ....
JSONObject jObject = new JSONObject(page);
if ( !jObject.isNull(this.JsonString) )
{
// THen call the CallbackMethod...
CallbackMethod ( jObject );
}
}
}
public class MyClass
{
public void MyFunc()
{
(new Communicator("http://url.tld", "House", this.MyCallback)).start();
}
public void MyCallback(JSONObject jObject)
{
// Then i can perform actions here...
}
}
不确定这是否是个好主意。但如果是这样,我如何创建像我的示例中的回调?这有可能吗?