gpt4 book ai didi

java - 为什么/如何返回 "locally instantiated array"在 Java 中工作?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:49:54 25 4
gpt4 key购买 nike

下面的代码片段似乎完全符合我的要求:

public CharSequence[] getAllCities() {
String selectQuery = "select " + COLUMN_CITY + " from " + TABLE_NAME;

SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);

CharSequence[] cities = new CharSequence[cursor.getCount()];

if (cursor.moveToFirst()) {
int numColumns = cursor.getColumnCount();
int i=0;
do {
cities[i++] = cursor.getString(0);
} while (cursor.moveToNext());
}

cursor.close();
db.close();
return cities;
}

也就是说,调用者得到返回的有效值:

CharSequence[] wowthiswillneverworkincpp = database.getAllCities();

但是......当垃圾收集器启动时,这不会在某个意想不到的时刻咬我吗?

如果不是,Java 语言中的什么特性可以保证这个本地实例化的数组在其整个使用过程中保持有效?我是否正确地假设只要它被分配到某处(即“被引用”),它就不会被 GC 清除干净?

最佳答案

一个对象是在本地实例化还是在任何其他地方实例化都没有关系。如果某物有对它的引用,无论是在本地(cities),还是通过方法的返回分配(wowthiswillneverworkincpp),那么垃圾收集器都不会将其清除。

关于java - 为什么/如何返回 "locally instantiated array"在 Java 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16680943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com