字节伙伴 - 子类 A 最终类



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

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我希望我的方法也能够子类化最终课程。此问题有什么解决方法吗?

没有办法对最终类进行子类化。 这是语言规范所禁止的。

ByteBuddy在很大程度上尊重语言规范,所以即使你想扩展一个最终的类,除非你能够操纵你想要覆盖的类的字节码,否则你不能final,尽管在这一点上你正在搞砸你真的不应该的事情。

最新更新