Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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 一个包含方面和类的jar文件能安全地自我测试吗_Java_Aop_Aspectj_Aspects - Fatal编程技术网

Java 一个包含方面和类的jar文件能安全地自我测试吗

Java 一个包含方面和类的jar文件能安全地自我测试吗,java,aop,aspectj,aspects,Java,Aop,Aspectj,Aspects,如果我有一个包含编译的方面和编译的类的插入指令的jar文件,我可以用它自己插入指令吗 如果我对输出jar重复这一点,行为是否会重复,或者第二个输出是否与第一个相同?您可以尝试一下。有吗 无论如何,答案是否定的。输出将是相同的。想想看:你不能用同样的方面重写一个类两次,因为当这个方面被翻译成字节码时,它也只是一个类,而且同一个类不能在JVM中存在两次,除非在独立的类加载器中 你为什么要这么做?用例是什么?这与我对过度编织工作的理解不符。例如,您可以在func-foo上编写一个around注释,最终

如果我有一个包含编译的方面和编译的类的插入指令的jar文件,我可以用它自己插入指令吗


如果我对输出jar重复这一点,行为是否会重复,或者第二个输出是否与第一个相同?

您可以尝试一下。有吗

无论如何,答案是否定的。输出将是相同的。想想看:你不能用同样的方面重写一个类两次,因为当这个方面被翻译成字节码时,它也只是一个类,而且同一个类不能在JVM中存在两次,除非在独立的类加载器中


你为什么要这么做?用例是什么?

这与我对过度编织工作的理解不符。例如,您可以在func-foo上编写一个around注释,最终得到around(around(foo())。那么,您的理解就不会映射到AspectJ连接点和切入点语义。为什么不为同一个切入点创建另一个建议呢?这很容易做到。如果您需要特定的优先顺序,可以对不同的方面使用
declare priority
,或者,如果您的建议在同一方面,请注意阅读AspectJ documentation.BTW的部分,当您谈到“过度编织”时,您可能指的是通常所说的重新编织。这也是很容易做到的,只是不是你想的那样。尝试学习AspectJ基础知识和语义,以了解如何使用不同的方法(可能更好的设计)解决您的问题。我担心,一厢情愿的想法在这方面对您没有帮助。即使过度编织,我也不希望一个方面(仍然==JVM类)存在两次,但我没有尝试过,因为过度编织在我当前的构建环境中会导致异常。如果你尝试,会发生什么?还有一个问题:你想要实现什么?用例是什么?你还没有回答这个问题。也许我可以告诉你怎么做。我想我已经充分回答并评论了你最初的问题。我建议你(a)接受我下面的答案,(b)提出一个新问题,解释你真正想要实现的目标。我也很乐意回答这个问题,这样你就可以最终解决你的问题了。我知道这个问题很老了,但仍然被列为未回答的问题。如果我的回答合适的话,请你接受并投赞成票好吗?谢谢