Java 创建对象时找不到源

Java 创建对象时找不到源,java,android,Java,Android,我想让GolferDBManager类中的一个方法返回我正在从SQLLite数据库构造的对象数组。当我尝试构建数组时,我在方法中得到一个Source Not Found错误 public Golfer[] retrieveGolfers(){ String[] columns = new String[]{"golfer_name", "golfer_init", "usga_index"}; Cursor cursor = db.query(true, DB_TABLE

我想让GolferDBManager类中的一个方法返回我正在从SQLLite数据库构造的对象数组。当我尝试构建数组时,我在方法中得到一个Source Not Found错误

    public Golfer[] retrieveGolfers(){
    String[] columns = new String[]{"golfer_name", "golfer_init", "usga_index"};
    Cursor cursor = db.query(true, DB_TABLE, columns, null, null, null, null, null, null, null);
    cursor.moveToFirst();
    int i = 0;
    while (cursor.isAfterLast() == false) {
        Golfer tGolfer = new Golfer(cursor.getString(0), cursor.getString(1), cursor.getFloat(2));
        lGolfers[i] = new Golfer(cursor.getString(0), cursor.getString(1), cursor.getFloat(2));
        cursor.moveToNext();
    }  
    if (cursor != null && !cursor.isClosed()) {
        cursor.close();
    }
    return lGolfers;
}
lGolfers在上面的类定义中定义为:

public class GolferDBManager {
 public static final String DB_NAME = "golfgames";
 public static final String DB_TABLE = "golfers";
 public static final int DB_VERSION = 1;
 private static final String CREATE_TABLE = "CREATE TABLE " + DB_TABLE + " (index INTEGER PRIMARY KEY, golfer_name TEXT, golfer_init TEXT, usga_index DOUBLE);";
 private SQLHelper helper;
 private SQLiteDatabase db;
 private Context context;
 private Golfer lGolfers[];

这条线很好用。我添加它是为了调试。下一行生成“未找到源”错误。我知道Golfer类的构造函数在那里,因为我在前一行中使用过

下面是调用所有这些的代码:

    public class ReadGolfers extends Activity {
    public Golfer Golfers[];
    private GolferDBManager mydManager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_read_golfers);

        mydManager = new GolferDBManager(this);
        mydManager.openReadable();
        Golfers = mydManager.retrieveGolfers();
        mydManager.retrieveGolfers();
        mydManager.close();
    }
}
有人能帮我理解为什么这不起作用吗

谢谢

事后,我更改了方法,将对象数组传递给它,如下所示:

    public void retrieveGolfers(Golfer lgolfers[]){
    String[] columns = new String[]{"golfer_name", "golfer_init", "usga_index"};
    Cursor cursor = db.query(true, DB_TABLE, columns, null, null, null, null, null, null, null);
    cursor.moveToFirst();
    int i = 0;
    while (cursor.isAfterLast() == false) {
        lgolfers[i] = new Golfer(cursor.getString(0), cursor.getString(1), cursor.getFloat(2));
        cursor.moveToNext();
    }  
    if (cursor != null && !cursor.isClosed()) {
        cursor.close();
    }
}

还是没有乐趣。

事实上这整句话都错了:

private Golfer lGolfers[];
应该是:

private Golfer[] lGolfers;
并初始化为:

lGolfers = new Golfer[100];
(或您想要的任何尺寸)

更好的方法是使用ArrayList:

private ArrayList<Golfer> lGolfers = new ArrayList<Golfer>();
private ArrayList lGolfers=new ArrayList();

在哪里初始化lGolfers[]数组?它在GolferDBManager类的定义中。这是声明。你在哪里做“新”的东西来实例化它呢?就在这一行,上面写着:lGolfers[i]=newgolfer(cursor.getString(0),cursor.getString(1),cursor.getFloat(2));在调用之前,我还尝试在调用例程(Golfers=null)中实例化它。没有区别。
private ArrayList<Golfer> lGolfers = new ArrayList<Golfer>();