Android Studio 中,有一个包名,注意是包,不仅仅是普通的文件夹,名称为 itpow,假设完整的包名为:com.itpow.android。
同时在 build.gradle 中 dependencies 下有一个 implementation:implementation files('libs/ms-excel-itpow-3.5.jar')
当我们在实施 Refactor -> Rename 的时候,选中 Search in comments and strings。
会将:implementation files('libs/ms-excel-itpow-3.5.jar') 中的 itpow 改名,改了之后就出错,因为文件名不是这个,引用自然出错了嘛:Expecting a file or a directory。这提示还真有点莫名其妙,你就说找不到对应的文件难道不清晰明了?非说什么希望是个文件或者目录。
这个匹配有点生硬呀。那按照上面的说法,我的注释中的 itpow、字符串变量引号中的 itpow 也会被改?
我们再来研究研究:
1、像这类字符串、注释,匹配是比较生硬,但是也遵从两个原则:一是大小写敏感,二是全字匹配。也就是说 zoo 匹配 zoo、zoo-park,但不匹配 ZOO、zoom。
2、变量、包名、类名这些不会生硬地匹配,比如 com.cftea.itpow,这里的 itpow 就不会被咱们上面的实验改到,因为它能够识别出来这不相干。
3、这里字符串、注释匹配功能是有 BUG 的。
关于这个 BUG
我在某 java 中写了这个字符串、备注,它一直无法找到,直到我 import 了这个包,然后才找到,那么理论上,我移除这个包的 import,应该继续找不到了,但是它仍然能找到。
继续,既然仍然能继续找到,我就继续做实验吧,当前找到了一个变量中的字符串、一个注释、一个文件名,但是当我把变量中的字符串删掉,不让它找到,再预览,他的确没有找到了,但是它却又冒出了 values 中的两个文件。此实验已经多次、认真、小心进行,绝无其他改变,可以看出这是个 BUG,而且类似的 BUG 还有。