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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。