Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
强制打开或以其他方式模拟Kotlin中的类_Kotlin_Inheritance_Jvm_Final - Fatal编程技术网

强制打开或以其他方式模拟Kotlin中的类

强制打开或以其他方式模拟Kotlin中的类,kotlin,inheritance,jvm,final,Kotlin,Inheritance,Jvm,Final,我在Kotlin工作,我有一个无法修改的库(如果不维护我自己的这个巨大且快速变化的库的分支) 我需要实例化库中的一个类,它需要另一个类的实例来为它做一些事情。我需要改变第二个类的工作方式,这样它就可以向第一个类提供不同的信息。但是第二个类不是open,第一个类通过其完整的非open类型请求它 我如何强行进入非开放类并扩展它,违背库作者的意愿?或者,我如何欺骗类型系统将我自己的类作为库要求的类的实例传递出去 我是否需要在JAR/构建系统级别上进行一些修改,以用我自己的版本替换库的类文件?我是否可以

我在Kotlin工作,我有一个无法修改的库(如果不维护我自己的这个巨大且快速变化的库的分支)

我需要实例化库中的一个类,它需要另一个类的实例来为它做一些事情。我需要改变第二个类的工作方式,这样它就可以向第一个类提供不同的信息。但是第二个类不是
open
,第一个类通过其完整的非
open
类型请求它

我如何强行进入非开放类并扩展它,违背库作者的意愿?或者,我如何欺骗类型系统将我自己的类作为库要求的类的实例传递出去


我是否需要在JAR/构建系统级别上进行一些修改,以用我自己的版本替换库的类文件?我是否可以使用反射以某种方式模拟非open类?还有其他方法吗?

没有简单的方法;我会更认真地寻找另一种实现目标的方法。(例如,库是否提供了另一种方式来执行您想要的操作,或者是否有其他库可供您使用。)-您不能欺骗类型系统,也不能扩展非打开的类,也不能在运行时替换类。您可能能够在构建时替换该类,但前提是该包没有被密封,这将是笨拙、危险和脆弱的。(或者理论上你可以编写你自己的类加载器来破解这个类,但这远不止如此……)要做到这一点没有任何简单的方法;我会更认真地寻找另一种实现目标的方法。(例如,库是否提供了另一种方式来执行您想要的操作,或者是否有其他库可供您使用。)-您不能欺骗类型系统,也不能扩展非打开的类,也不能在运行时替换类。您可能能够在构建时替换该类,但前提是该包没有被密封,这将是笨拙、危险和脆弱的。(或者从理论上讲,您可以编写自己的类加载器来攻击该类,但情况远不止如此……)