gpt4 book ai didi

java - Bytebuddy - 子类最终类

转载 作者:行者123 更新时间:2023-11-29 04:16:35 25 4
gpt4 key购买 nike

我正在尝试编写一个如下所示的通用方法:

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:不能子类化基本类型、数组或最终类型我希望我的方法也能够继承最终类。这个问题有什么解决方法吗?

最佳答案

没有办法对最终类进行子类化。 language spec 禁止它.

ByteBuddy 在很大程度上尊重语言规范,所以即使您想扩展最终类,您也做不到,除非您能够操纵要覆盖的类的字节码不是 final,虽然此时你正在搞乱一些你不应该搞的事情。

关于java - Bytebuddy - 子类最终类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52012274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com