0

是否可以在 Java 中通过代码检查对象是否已在静态上下文中创建?

背景:我想根据对象的类型(在静态上下文中创建的静态类/对象 -> 强引用,常规对象 -> 弱引用)来决定是否使用弱引用或强引用来存储给定对象。我需要将引用保留在一个可能长期存在的请求中,这可能是唯一保留对所指对象的引用的对象。当我为 Android 编程时,这些对象可能是活动,我不想仅仅因为周围仍然存在可能过时的请求而保留这些活动 - 因此在这种情况下需要弱引用。但是,如果请求是由静态类或在静态上下文中发出的,我想保留静态类(与整个活动相反,这些类通常不会占用太多内存)。

希望这个要求听起来不会太粗糙。;) 我们计划在未来交换基于活动的通信以支持单一通信服务,但目前使用弱引用(以及在绝对必要时使用强引用)的简单解决方案也可以。

4

1 回答 1

1

简单地说:没有。

您可以将 new 关键字想象为静态方法调用(如工厂方法)。没有上下文被传递给构造函数,除了它的参数(对于非静态内部类,编译器神奇地添加父对象引用作为参数。这在源代码中是不可见的)。

简单的方法是向构造函数添加一个参数,让调用者明确决定他想要什么。

于 2013-07-26T14:55:41.480 回答