我希望得到一些反馈。当涉及到任何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;
}
答案 0 :(得分:1)
不,Java不会那样工作。一般来说,当你从一种语言转移到另一种语言时,假设它们以相同的方式工作是绝对不可能的。在VB中,您有ByVal
和ByRef
的概念。在第一个中,进行复制,在第二个中,传递内存地址,对变量所做的任何更改都将反映在其引用的任何位置。 Java的工作方式类似于将ByRef
用于非基本类型的所有变量(例如int
,double
等)。
我的回答here将为您提供更多信息,并查看this article,以获得有关Java中传递参数的方式的更多技术说明。