当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Java java.lang.ref.Reference用法及代码示例

java.lang.ref.Reference 类是 reference 对象的 abstract base class。此类包含用于获取有关引用对象的信息的方法。该类不是直接的 subclass,因为对引用对象的操作与co-operation 和garbage collector 接近。

类声明:防止

public abstract class Reference<T>
extends Object

方法:

方法 说明
clear() 此方法通过清除此引用对象来防止此对象排队。只有java代码可以调用该方法。垃圾Collector可以直接清除引用。垃圾Collector不需要调用此方法来清除引用。
enqueue() 此方法将此对象添加到其注册队列中。
get() 该方法用于获取该引用所引用的对象。如果 java 代码或垃圾Collector清除了此引用处的对象,则返回 null。
isEnqueued() 此方法用于了解此引用对象是否已注册到任何队列。

1.公共无效clear():

此方法通过清除此引用对象来防止此对象排队。只有 java code可以调用此方法。垃圾Collector可以直接清除引用。垃圾Collector不需要调用此方法来清除引用。

2. 公共布尔值enqueue()

此方法将此对象添加到其注册队列中。

返回:如果此引用对象已成功添加到已注册队列,则为 true;如果此引用对象在创建时未注册到任何队列,则为 false。

3.公共Tget():

该方法用于获取该引用所引用的对象。如果 java 代码或垃圾Collector清除了此引用处的对象,则返回 null。

返回:此引用引用的对象,如果该对象已清除,则为 null。

4.公共布尔值isEnqueued():

此方法用于了解此引用对象是否已注册到任何队列。

返回:如果此引用对象已入队,则为 true,否则为 false

Java


// Java program to illustrate working of Reference Class
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.SoftReference;
class Gfg {
}
public class GFG {
    public static void main(String[] args)
    {
        // Strong Reference
        Gfg g = new Gfg();
        ReferenceQueue<Gfg> q = new ReferenceQueue<Gfg>();
        // Creating Soft Reference to Gfg-type object to
        // which 'g' is also pointing and registering it
        // with q
        Reference<Gfg> softref
            = new SoftReference<Gfg>(g, q);
        g = softref.get();
        System.out.println(g.toString());
        // enqueue softref to its registered queue i.e q
        if (softref.enqueue()) {
            System.out.println(
                "Object successfully enqueued");
        }
        else {
            System.out.println("Object not enqueued");
        }
        // checking if softref is enqueued or not
        if (softref.isEnqueued()) {
            System.out.println("Object is enqueued");
        }
        else {
            System.out.println("Object not enqueued");
        }
        // clearing this reference object
        softref.clear();
        System.out.println("Object cleared");
        // trying to enqueue after clearing
        if (softref.enqueue()) {
            System.out.println(
                "Object successfully enqueued");
        }
        else {
            System.out.println("Object not enqueued");
        }
    }
}
输出
Gfg@214c265e
Object successfully enqueued
Object is enqueued
Object cleared
Object not enqueued


相关用法


注:本文由纯净天空筛选整理自abhinavjain194大神的英文原创作品 java.lang.ref.Reference Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。