首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java反射使final方法不是final

Java反射使final方法不是final
EN

Stack Overflow用户
提问于 2018-01-11 00:05:13
回答 1查看 276关注 0票数 1

我知道如何通过反射使Field不是最终的。但是有没有办法让一个方法成为非final的呢?不知何故,同样的方法并不起作用。

代码语言:javascript
复制
// make all methods non-final

    Clazz.javaClass.declaredMethods.forEach { method ->
        method.isAccessible = true
        val modifiersField = method.javaClass.getDeclaredField("modifiers")
        modifiersField.isAccessible = true
        modifiersField.setInt(method, modifiersField.modifiers and Modifier.FINAL.inv())
    }
EN

回答 1

Stack Overflow用户

发布于 2018-01-11 00:19:23

这是不可能的,因为反射只作用于已经编译的数据。

您不能在运行时修改编译,因为您没有使用脚本语言进行编程。我们谈论的是Java,它是一种编译语言,需要翻译成一种机器更简单的语言,JVM可以比代码本身更快地解释这种语言。

您可以直接管理运行时的字节码,this answer提供了一个很好的起点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48191501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档