簡體   English   中英

Bytebuddy - 最后一課的子類

[英]Bytebuddy - subclass a final class

我正在嘗試編寫一個如下所示的泛型方法:

private static <T> Class<? extends T> immutableVersionOfClass(Class<T> clazz) {
    return new ByteBuddy()
            .subclass(clazz)
            .method(not(returns(VOID)))
            .intercept(to(GetterInterceptor.class))
            .method(returns(VOID))
            .intercept(to(SetterInterceptor.class))
            .make()
            .load(clazz.getClassLoader())
            .getLoaded();
}

但是當最終類作為參數傳遞時,我得到一個異常: java.lang.IllegalArgumentException: Cannot subclass primitive, array or final types我希望我的方法能夠java.lang.IllegalArgumentException: Cannot subclass primitive, array or final types最終類。 這個問題有解決方法嗎?

沒有辦法繼承最終的類。 它被語言規范所禁止。

ByteBuddy在很大程度上尊重語言規范,所以即使你想擴展一個最終的類,除非你能夠操縱你想要覆蓋的類的字節代碼而不是 final ,否則你不能 ,盡管那時你是弄亂你真的不應該做的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM