java – 为什么编译器构建在某些情况下返回无法访问的代码
发布时间:2020-05-24 12:31:47 所属栏目:Java 来源:互联网
导读:如果我写 private void check(){ if(true) return; String a = test;} 上面的代码工作正常,但如果我写 private void check(){ return; String a = test;} Android Studio中的编译器/ gradle虽然它是相同的,但它不会让这个通过,并且它
|
如果我写 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";
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- JAXB Java生成XML,为什么是小写?
- 包含main方法的Java Extending类
- java – 如何将悬停效果放在jbutton上?
- filesystems – 什么文件系统操作需要是原子的?
- java中BigDecimal进行加减乘除的基本用法
- springMVC自定义注解,用AOP来实现日志记录的方法
- java – QPID – Spring CachingConnectionFactory – 重新
- java – Spring Batch Reader的游标在JTA事务管理步骤初期关
- java – 什么时候应该抛出一个方法抛出InterruptedExceptio
- java – Spring是否为执行Hystrix命令的线程提供SecurityCo
