Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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
Java 哪些类是不可修改的,不能嵌入,有没有办法绕过它?_Java_Instrumentation_Internals - Fatal编程技术网

Java 哪些类是不可修改的,不能嵌入,有没有办法绕过它?

Java 哪些类是不可修改的,不能嵌入,有没有办法绕过它?,java,instrumentation,internals,Java,Instrumentation,Internals,当尝试插入类(如java.util.ArrayList)时,我得到的是java.lang.instrument.UnmodifiableClassException 您可以使用Instrumentation.isModifiableClass()检查类是否可修改 我的问题是: 哪些课程不是虚构的?如何确定 有没有办法绕过这个 顺便说一句,我在使用HotSpot或JLocking时没有遇到这个异常,只有在使用IBMJVM时 谢谢, Gilad您应该在您的仪器上调用isModifiableClass

当尝试插入类(如
java.util.ArrayList
)时,我得到的是
java.lang.instrument.UnmodifiableClassException

您可以使用
Instrumentation.isModifiableClass()
检查类是否可修改

我的问题是:

  • 哪些课程不是虚构的?如何确定
  • 有没有办法绕过这个 顺便说一句,我在使用HotSpot或JLocking时没有遇到这个异常,只有在使用IBMJVM时

    谢谢,
    Gilad

    您应该在您的仪器上调用
    isModifiableClass

    boolean isModifiableClass(Class<?> theClass)
    
    boolean可修改类(类)
    

    确定类是否可以通过重传或重新定义进行修改。如果类是可修改的,则此方法返回true。如果类不可修改,则此方法返回false。 对于要重新转换的类,isRetransformClassesSupported()也必须为true。但是IsRetransformClasseSupported()的值不影响此函数返回的值。对于要重新定义的类,IsRedeFineClasseSupported()也必须为true。但是isRedefineClassesSupported()的值不影响此函数返回的值

    基本类(例如java.lang.Integer.TYPE)和数组类永远不可修改


    谢谢你的回答。是的,这就是我正在做的。我的问题是什么决定了一个类是否是不可修改的,是否有办法绕过它……我看不到有办法绕过它。我想这就是JVM保持安全的方式,因此您不能修改所有内容。