検索

ホームページ  >  に質問  >  本文

java - 能不能直接通过反射拿到对象,实现注解回收对象

这样子是新创建了
Subscription subscription= (Subscription) field.getType().newInstance();
但是我不想新建

field.get()这个方法又有什么用

这样不行 Subscription subscription=(Subscription) field;不能转类型

这样能转类型,但是直接就报错了field不能转成Subscription
Object obj=(Object)field;
Subscription subscription=(Subscription) obj;

只是想注解,然后在基类的onDestory销毁类中注解的Subscription

不知道我的描述是否正确,如有不准确的地方请指正,谢谢,注解和反射也没有经常用

阿神阿神2853日前665

全員に返信(1)返信します

  • ringa_lee

    ringa_lee2017-04-18 10:36:49

    私の理解が正しければ、質問者は onDestory 中にヒープ メモリ内のオブジェクト インスタンスを取得したいと考えています。その場合は、Unsafe で解決するはずです。ただし、ヒープに保存されたオブジェクト インスタンスに参照がない場合は、次の GC でリサイクルされるため、これを行う必要はありません。

    onDestory时拿到堆内存中的对象实例。如果是这样,Unsafe应该可以实现。但是没有这样做的必要,因为当堆中保存的对象实例在没有任何引用的情况下,会在下一次GC时被回收。

    Unsafe是java直接可以操作内存的后门,并非与平台无关,而且很不安全。在有GC管理内存的情况下,没有必要只用UnsafeUnsafe は、Java がメモリを直接操作できるようにするバックドアであり、プラットフォームに依存せず、非常に安全ではありません。メモリを管理する GC がある場合、単に Unsafe を使用する必要はありません。

    返事
    0
  • キャンセル返事