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
java支持注释的热交换吗?_Java_Annotations_Hotswap - Fatal编程技术网

java支持注释的热交换吗?

java支持注释的热交换吗?,java,annotations,hotswap,Java,Annotations,Hotswap,另外,java对热交换操作有很多限制,例如不允许更改字段或方法名。那么如何添加或删除字段的注释呢 如果是这样,除了字段注释之外,还有很多种注释,例如方法注释,类注释等。这些注释是否都支持热交换 例如,在交换之前: class A{ @FieldAnnotation1 int field; } 之后: class A{ @FieldAnnotation2 int field; } 另外,Java对热交换操作有很多限制,例如不允许更改字段或方法名 这取决于热交换的实现方式 如果通过(比如)替换

另外,java对热交换操作有很多限制,例如不允许更改字段或方法名。那么如何添加或删除字段的注释呢

如果是这样,除了字段注释之外,还有很多种注释,例如方法注释类注释等。这些注释是否都支持热交换

例如,在交换之前:

class A{
@FieldAnnotation1 int field;
}
之后:

class A{
@FieldAnnotation2 int field;
}
另外,Java对热交换操作有很多限制,例如不允许更改字段或方法名

这取决于热交换的实现方式

  • 如果通过(比如)替换servlet来热交换代码,则这些限制不适用

  • 对于IDE中的热交换,限制因素可能是IDE调试器的复杂性,而不是Java本身

那么,如何添加或删除字段的注释呢

您需要担心的不是Java 1。Java运行时系统将处理这个问题。就Java而言,当您“热交换”一个类时,您正在创建一个新类。Java不知道旧注释或新注释的含义,也不知道新类与旧类之间是否存在某种关联。只要可以从新类中检索到新注释,Java就完成了它的工作

真正的问题是:

  • IDE能应付吗?这取决于IDE

  • 您正在使用的框架是否能够应对它。框架“理解”注释的含义,并包括处理注释的软件。如果通过热交换更改注释,则由该软件对运行时数据结构、行为等进行任何调整。这取决于框架



1-我这样说的原因是注释不会直接影响字节码执行或对象或堆栈帧的布局。但是,我必须承认,我无法在JVMTI级别上找到任何关于热交换或其限制的清晰描述。

感谢您的回复,但答案似乎没有直接回答我的问题。也就是说,热交换是否会成功接受注释的更改?或者更确切地说,这是否符合java热交换规则的限制?