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
相关用法
- Java java.lang.ref.ReferenceQueue用法及代码示例
- Java java.lang.ref.WeakReference用法及代码示例
- Java java.lang.ref.PhantomReference用法及代码示例
- Java java.lang.ref.SoftReference用法及代码示例
- Java java.lang.reflect.AccessibleObject.getAnnotation()用法及代码示例
- Java java.lang.reflect.AccessibleObject.getAnnotations()用法及代码示例
- Java java.lang.reflect.AccessibleObject.getDeclaredAnnotations()用法及代码示例
- Java java.lang.reflect.AccessibleObject.isAccessible()用法及代码示例
- Java java.lang.reflect.AccessibleObject.setAccessible()用法及代码示例
- Java java.lang.reflect.Array.get()用法及代码示例
- Java java.lang.reflect.Array.getBoolean()用法及代码示例
- Java java.lang.reflect.Array.getByte()用法及代码示例
- Java java.lang.reflect.Array.getChar()用法及代码示例
- Java java.lang.reflect.Array.getDouble()用法及代码示例
- Java java.lang.reflect.Array.getFloat()用法及代码示例
- Java java.lang.reflect.Array.getInt()用法及代码示例
- Java java.lang.reflect.Array.getLength()用法及代码示例
- Java java.lang.reflect.Array.getLong()用法及代码示例
- Java java.lang.reflect.Array.getShort()用法及代码示例
- Java java.lang.reflect.Array.newInstance()用法及代码示例
- Java java.lang.reflect.Array.set()用法及代码示例
- Java java.lang.reflect.Array.setBoolean()用法及代码示例
- Java java.lang.reflect.Array.setByte()用法及代码示例
- Java java.lang.reflect.Array.setChar()用法及代码示例
- Java java.lang.reflect.Array.setDouble()用法及代码示例
注:本文由纯净天空筛选整理自abhinavjain194大神的英文原创作品 java.lang.ref.Reference Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。