Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过代码确定对象是否在静态上下文中创建_Java_Android_Reference - Fatal编程技术网

Java 通过代码确定对象是否在静态上下文中创建

Java 通过代码确定对象是否在静态上下文中创建,java,android,reference,Java,Android,Reference,在Java中,是否可以通过代码检查对象是否已在静态上下文中创建 背景:我想根据给定对象的类型(在静态上下文中创建的静态类/对象->强引用,常规对象->弱引用),决定是否使用弱引用或强引用来存储该对象。我需要将引用保存在一个可能存在很长时间的请求中,这个请求可能是唯一一个保存引用的对象。当我为Android编程时,这些对象可能是活动,我不想仅仅因为仍然有可能过时的请求而保留这些活动,因此在本例中需要弱引用。但是,如果请求是由静态类发出的,或者是在静态上下文中发出的,我希望保留静态类(与整个活动相反

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

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

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

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


要做到这一点,最简单的方法是向构造函数中添加一个参数,并让调用方显式地决定他想要什么。

我最终就是这样做的。如果有其他解决方案,将再等一天,然后将此答案标记为已接受。