返回ArrayList给出错误:找不到符号

时间:2013-10-31 14:21:04

标签: java arraylist compiler-errors return return-value

我正在尝试返回一个ArrayList,但最后我得到错误:找不到符号。我在列表中添加了一些字符串和双打并将其返回到所谓的字符串。

错误:

./Sample.java:55: error: cannot find symbol
        return placeMatch;
               ^
  symbol:   variable placeMatch
  location: class Sample
1 error

考虑到提到的关于try catch的内容我将我的声明声明移到了顶部,我得到了:

./ Sample.java:54:错误:不兼容的类型         return placeMatch;                ^   必需:字符串   发现:ArrayList

实际代码:

import java.util.ArrayList;
//...other imports

public class Sample
  extends UnicastRemoteObject
  implements SampleInterface {



    public Sample() throws RemoteException {

    }

    public String invert(String city, String state) throws RemoteException {
        try{


 ArrayList<Object> placeMatch = new ArrayList<Object>();
        // Read the existing address book.
        PlaceList place =
        PlaceList.parseFrom(new FileInputStream("places-proto.bin"));

        // Iterates though all people in the AddressBook and prints info about them.

        for (Place Placeplace: place.getPlaceList()) {
        //System.out.println("STATE: " + Placeplace.getState());
            if(Placeplace.getName().startsWith(city)){
                placeMatch.add(Placeplace.getName());
                placeMatch.add(Placeplace.getState());
                placeMatch.add(Placeplace.getLat());
                placeMatch.add(Placeplace.getLon());
                break;
            }


          }

        }catch(Exception e){
               System.out.println("opening .bin failed:" + e.getMessage());
        }
        return placeMatch;
    }

}

2 个答案:

答案 0 :(得分:8)

您需要声明:

ArrayList<Object> placeMatch = new ArrayList<Object>();

在try块之外。

第二个问题:

方法返回类型为String。您无法退回ArrayList<Object>

解决方案取决于您需要做什么。您可以更改返回类型:

public List<Object> invert(String city, String state) throws RemoteException {

答案 1 :(得分:1)

参数placeMatch仅在try块中可见。因此,如果要在try块中初始化并声明此参数,则应在try块的底部返回此参数,并在catch块中返回null或其他内容。但!如果可以的话,在try块外面声明这个param,作为实例变量。