java – 为什么编译器构建在某些情况下返回无法访问的代码
发布时间:2020-12-15 00:40:10 所属栏目:Java 来源:网络整理
导读:如果我写 private void check(){ if(true) return; String a = "test";} 上面的代码工作正常,但如果我写 private void check(){ return; String a = "test";} Android Studio中的编译器/ gradle虽然它是相同的,但它不会让这个通过,并且它表示在示例2中返回后
如果我写
private void check(){ if(true) return; String a = "test"; } 上面的代码工作正常,但如果我写 private void check(){ return; String a = "test"; } Android Studio中的编译器/ gradle虽然它是相同的,但它不会让这个通过,并且它表示在示例2中返回后的代码无法访问. 我对此没有任何问题,但我很想知道为什么? 解决方法
这可以通过Java语言规范的
Unreachable Statements部分来解释.
有一些规则,有一个有趣的特殊情况.这是一个编译时错误: while (false) { // this code is unreachable String something = ""; } 虽然这不是: if (false) { // this code is considered as reachable String something = ""; } 给出的原因是允许某种条件编译,例如: static final boolean DEBUG = false; ... if (DEBUG) { x=3; } 所以在你的情况下: private void check(){ if(true) return; // NO compilation error // this is conditionnal code // and may be omitted by the compiler String a = "test"; } 因为特殊的if治疗不是错误,使用while而不是接受: private void check(){ while(true) return; // "Unreachable statement" compilation error String a = "test"; } 这也是错误的: private void check(){ if(true) return; else return; // "Unreachable statement" compilation error String a = "test"; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |