Android中变量类型修复的「change」与「migrate」选项区别及选择疑问
Android中「change」和「migrate」类型修复选项的区别
我之前在Android Studio里处理类型不匹配问题时,也纠结过这两个选项,查了不少资料加上实际测试后,终于搞清楚它们的核心区别了:
「Change」选项:这是局部性的类型修改,只会针对你当前选中的单个变量、表达式或者局部代码块调整类型。比如你有个
int num = 10;要赋值给long target,选「Change type of 'num' to long」后,只会把这个num变量的类型改成long,其他地方如果还有用num的地方,只有当那些地方依赖原int类型时才会报错,本质上就是只改当前这一处的类型定义。「Migrate」选项:这是全局性的类型迁移,它会扫描整个项目(或者你指定的范围),把所有引用了原类型的地方批量替换成目标类型。举个例子,如果你项目里用了自定义的
LegacyUser类,后来重构换成了NewUser,当代码里出现LegacyUser user = new NewUser();的类型不匹配时,选「Migrate 'LegacyUser' to 'NewUser'」,Android Studio会自动把所有声明为LegacyUser的变量、方法参数、返回值甚至是泛型里的引用都换成NewUser,相当于帮你完成了一次全项目的类型替换。
简单总结:
- 只是单个局部变量/表达式的类型不匹配,选「Change」就好,不会影响其他代码;
- 需要统一替换整个项目里某个类型的所有引用,选「Migrate」更高效,能避免手动逐个修改的麻烦。
内容的提问来源于stack exchange,提问作者Kent Lauridsen
相关产品推荐
相关产品推荐

