Java 从Parse.com查询返回字符串

Java 从Parse.com查询返回字符串,java,android,parse-platform,Java,Android,Parse Platform,因此,这似乎不起作用,但同样不能从void方法返回字符串。问题是我绝对需要根据类的结构返回一个字符串。我能做些什么来实现这一点?我需要得到物品的价格 @Override public String getCost() { final String[] productValue = {"null"}; ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Inventory"); query

因此,这似乎不起作用,但同样不能从void方法返回字符串。问题是我绝对需要根据类的结构返回一个字符串。我能做些什么来实现这一点?我需要得到物品的价格

@Override
public String getCost() {
final String[] productValue = {"null"};
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Inventory");
        query.whereEqualTo("productName", "Capris");
        query.findInBackground(new FindCallback<ParseObject>() {
            public void done(List<ParseObject> list, ParseException e) {
                if (e == null) { //no exception, hence success
                    for (ParseObject productCost : list) {
                        productValue[0] = (String) productCost.get("productPrice");
                        // Cannot return a value from a method with void result type
                        return productValue[0];
                    }
                }
                else {
                    // Cannot return a value from a method with void result type
                    return null;
                }
            }
        });
        return null;
    }
@覆盖
公共字符串getCost(){
最后一个字符串[]productValue={“null”};
ParseQuery=新的ParseQuery(“库存”);
查询:whereEqualTo(“产品名称”、“Capris”);
findInBackground(新的FindCallback(){
公共作废完成(列表,异常解析){
如果(e==null){//没有异常,那么就成功了
对于(ParseObject productCost:list){
productValue[0]=(字符串)productCost.get(“productPrice”);
//无法从具有void结果类型的方法返回值
返回productValue[0];
}
}
否则{
//无法从具有void结果类型的方法返回值
返回null;
}
}
});
返回null;
}

您的条件不正确

 @Override
    public String getCost() {
        final String[] productValue = {null};
        ParseQuery<ParseObject> query = new ParseQuery<ParseObject>
        query.whereEqualTo("productName", Capris);
        query.findInBackground(new FindCallback<ParseObject>() {
            public void done(List<ParseObject> list, ParseException e) {
                if (e == null) { //no exception, hence success
                    productValue[0] = list.get(0).getString("productPrice");
                }
            }
        });
        return productValue[0];
    }
@覆盖
公共字符串getCost(){
最后一个字符串[]productValue={null};
ParseQuery=新的ParseQuery
query.whereEqualTo(“productName”,Capris);
findInBackground(新的FindCallback(){
公共作废完成(列表,异常解析){
如果(e==null){//没有异常,那么就成功了
productValue[0]=list.get(0.getString(“productPrice”);
}
}
});
返回productValue[0];
}
在上面的代码中,productValue[0]可能为null,因为它是一个aysnc调用 所以用find()替换findInBackground

公共字符串getCost(){
字符串productValue=null;
ParseQuery=新的ParseQuery(“库存”);
查询:whereEqualTo(“产品名称”、“Capris”);
试一试{
List results=query.find();
productValue=results.get(0.getString(“productPrice”);
返回产品价值;
}捕获(解析异常){
e、 printStackTrace();
}
返回产品价值;
}

对。感谢您指出这一点,但它仍然没有解决我不能在void方法上返回字符串的问题。不管怎样,我都需要提取那个字符串。我的getCost()方法必须返回字符串。嗯。。。问题是,如果“done”方法中没有返回,则永远不会使用productValue字符串。但是,如果返回发生在该范围之外,则字符串不可访问且无法分配。“done”方法拒绝我返回字符串。这可能是一个比表面上看起来更深的问题。谢谢你的努力。我真的很感激它,但是如果返回值不是在“done”方法中发生,它就不可能工作。进入字符串的值与在方法末尾返回的值之间没有显式连接。我只是想知道是否有另一种方法可以完全做到这一点。它按预期返回null,因为没有从查询中为变量分配新值。让我们来看看。有什么方法可以异步执行此操作吗?
public String getCost() {
    String productValue = null;
    ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Inventory");
    query.whereEqualTo("productName", "Capris");
    try {
        List<ParseObject> results = query.find();
        productValue = results.get(0).getString("productPrice");
        return productValue;
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return productValue;
}