注释一个类以消除循环引用。
注释内部类意味着删除其对引用的外部对象的所有权,从而使引用不包括在引用计数中。匿名内部类可以使用内部方法进行注释。
此类可以解决无法注释外部类实例的字段的问题,因为当 Java 内部类隐式捕获该字段时,没有提供显式声明。如果内部类不能定义为静态嵌套类,则必须使用外部类实例,并且可以使用 UnownedOuter 注释内部类以消除循环引用。
此类的不正确使用可能导致与未拥有相同的结果,从而导致引用对象的早期释放。
请参考以下示例代码:
class Outer{
@UnownedOuter
private class Innert {
...;
}
Private Runnable r = new Runnable() {
@Override
@UnownedOuter
Public void run() {
...;
}
}
}
ClassLoaderjava.lang.Object |---java.lang.ClassLoaderpublic abstract class ClassLoaderextends Object类加载器是负责加载类...
Exceptionjava.lang.Object |---java.lang.Throwable |---|---java.lang.Exceptionpublic class Exceptionextends Throwable类 E...
LinkageErrorjava.lang.Object |---java.lang.Throwable |---|---java.lang.Error |---|---|---java.lang.LinkageErrorpublic cl...
immediateDelivery.abnormalConfirm本接口应在服务器端调用,详细说明参见服务端API。异常件退回商家商家确认收货接口请求地址PO...
immediateDelivery.onAgentPosQuery本文档描述服务器端接收的消息或事件,详细说明参见消息推送。查询骑手当前位置信息消息参数O...
SPI_execute_with_args — 用线外参数执行一个命令大纲int SPI_execute_with_args(const char *command,int nargs, Oid *argtype...
SPI_scroll_cursor_fetch — 从一个游标取出一些行大纲void SPI_scroll_cursor_fetch(Portal portal, FetchDirection direction,...
ALTER RULE — 更改一个规则定义大纲ALTER RULE name ON table_name RENAME TO new_name描述 ALTER RULE更改一条现有规则的定义...
ALTER TABLESPACE — 更改一个表空间的定义大纲ALTER TABLESPACE name RENAME TO new_nameALTER TABLESPACE name OWNER TO { new...