两个函数之间传递的对象

时间:2011-04-26 03:17:12

标签: android

我希望得到一些反馈。当涉及到任何android或java编程时,我是初学者,因此不确定它属于哪个领域。我有两个函数(正确的术语?在VB中),一个返回一个字符串数组,另一个是基于我传递给它的Cursor的int数组。我无法想象最长的是为什么我的int数组函数在我的Cursor中确认数据时没有返回任何数据。事实证明,我将传递给我的第一个函数(字符串数组)的Cursor将移动Cursor位置,因为函数通过游标数据迭代。在字符串数组函数之后,我将光标传递给我的int数组函数。这个不会在我的int数组中返回任何数据,我正在绞尽脑汁一段时间,直到我意识到它只是看到了光标的结束并假设它完成了它的工作。一旦我添加了cursor.moveToPosition(-1),它就能很好地工作。 java / android不能像VB那样工作吗?在VB.net中,我能够将一个对象传递给一个函数,该函数不具有它自己的对象副本,而不会影响我传递的原始对象。很抱歉这封冗长的电子邮件,只是不知道如何说出来。

也许我写错了所以我在下面添加了我的代码,所以你们可以告诉我,如果我做错了什么。

CompanyList = mDbHelper.CompanyNames(searchParam, SearchedColumn);
String CompanyNames[] = mDbHelper.CursorToString(CompanyList, "CompanyName"); 
final int CompanyID[] = mDbHelper.CursorToInt(CompanyList, "CompanyID");

public String[] CursorToString(Cursor cursor, String columnName){
    int cursorCount = cursor.getCount();
    if (cursorCount > 0 ){
        String[] str = new String[cursorCount];
        int i = 0;

        while (cursor.moveToNext()){
            str[i] = cursor.getString(cursor.getColumnIndex(columnName));
            i++;
        } 
        return str;
    }
    return new String[]{};
}

public int[] CursorToInt(Cursor cursor, String columnName) {
    int cursorCount = cursor.getCount();
    if (cursorCount > 0) {
        int[] number = new int[cursorCount];
        int i = 0;
        cursor.moveToPosition(-1);
        while (cursor.moveToNext()){
            number[i] = cursor.getInt(cursor.getColumnIndex(columnName));
            i++;
        }
        return number;
    }
    return null;
}

1 个答案:

答案 0 :(得分:1)

不,Java不会那样工作。一般来说,当你从一种语言转移到另一种语言时,假设它们以相同的方式工作是绝对不可能的。在VB中,您有ByValByRef的概念。在第一个中,进行复制,在第二个中,传递内存地址,对变量所做的任何更改都将反映在其引用的任何位置。 Java的工作方式类似于将ByRef用于非基本类型的所有变量(例如intdouble等)。

我的回答here将为您提供更多信息,并查看this article,以获得有关Java中传递参数的方式的更多技术说明。