相关疑难解决方法(0)

你为什么要实现finalize()?

我一直在阅读关于finalize()的很多新手Java问题,并发现有点令人困惑的是,没有人真正说明finalize()是一种不可靠的清理资源的方法.我看到有人评论说他们用它来清理Connections,这真的很可怕,因为接近Connection的关闭的唯一方法就是最终实现try(catch).

我没有受过CS的教育,但是我已经用Java专业编程近十年了,我从未见过有人在生产系统中实现finalize().这仍然不意味着它没有它的用​​途,或者我与之合作过的人一直在做正确的事.

所以我的问题是,实现finalize()的用例是什么,无法通过语言中的其他进程或语法更可靠地处理?

请提供具体的方案或您的经验,只是重复Java教科书,或最终确定的用途是不够的,这不是这个问题的意图.

java jvm

362
推荐指数
12
解决办法
9万
查看次数

WeakHashMap,类型为Long,Int或String

在做一些关于如何在android中传递对象引用的研究时,我正在思考以下内容.

假设我有一个带有Long作为键的WeakHashmap.现在我将一个Object放入此WeakHashMap并将其分配给键'new Long(1)'(假设我将保存对此Long的引用).

现在应用程序的另一部分创建一个新的Long(1),之后我将我的第一个Long(用作键)设置为null.

  1. WeakHashMap中的Object会发生什么?
  2. 如果我将Long替换为具有Long成员的自己的Class并让其compare() - 如果将其与具有相同值的相同类型的另一个对象(我自己的类)进行比较,则返回true.
  3. 假设在两种情况下WeakReference都被清除.如果我在清除第一个输出之前使用我的第二个创建的密钥访问WeakHasMap一次会有所不同吗?

java weak-references weakhashmap

3
推荐指数
1
解决办法
591
查看次数

标签 统计

java ×2

jvm ×1

weak-references ×1

weakhashmap ×1