Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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反射更新.class文件_Java_Reflection - Fatal编程技术网

Java反射更新.class文件

Java反射更新.class文件,java,reflection,Java,Reflection,我刚刚了解了Java反射功能,并使用它成功地完成了以下工作: 访问类的公共成员函数 设置类的公共成员函数 我的问题是,当我进行设置时,我的.class文件会被更新吗(我看不到新的设置值会发生这种情况) 我明白了,但我不确定我的问题的答案。如果.class文件不应更新,那么我们如何重置该.class文件以包含动态数据,以便程序可以继续使用新的值集而不是编译时确定的旧值集?或者这是不可能的?.class是一个编译代码(您的.java的转换),这是一个针对jvm的只读文件 jvm读取.class的代码

我刚刚了解了Java反射功能,并使用它成功地完成了以下工作:

  • 访问类的公共成员函数

  • 设置类的公共成员函数

  • 我的问题是,当我进行设置时,我的.class文件会被更新吗(我看不到新的设置值会发生这种情况)


    我明白了,但我不确定我的问题的答案。如果.class文件不应更新,那么我们如何
    重置
    该.class文件以包含动态数据,以便程序可以继续使用新的值集而不是编译时确定的旧值集?或者这是不可能的?

    .class
    是一个编译代码(您的
    .java
    的转换),这是一个针对
    jvm
    的只读文件


    jvm
    读取
    .class
    的代码,然后代码就存在
    jvm
    内存中。所有反射方法都会修改内存中的
    代码,并且永远不会将其写回
    .class

    asnwer是:否。如果希望保留字段值,则必须序列化该类。我非常非常困惑。这个问题意味着反射被用来以某种方式添加一个使用反射的新方法(“成员函数”),但这是不可能的。可以使用反射调用setter方法并更改类实例的属性值。这与任何.class文件都没有任何关系。