在工程编译时,编译器发现部分代码是无用代码,则会提示:某一行代码是DeadCode。今天compile工程的时候发现某一个循环出现这个问题,如下:

    public void mouseOver(final String[] xpathArray) {
final int browserType = GlobalSettings.browserCoreType;
// Selenium doesn't support the Safari browser
if (browserType == 4) {
Assert.fail("Mouseover is not supported for Safari now");
Assert.fail("Incorrect browser type");
} pause(pause);
Robot rb = null;
try {
rb = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
rb.mouseMove(0, 0);
try {
webDriverWait.until(new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
Boolean flag = false;
for (String xpath : xpathArray) {
WebElement we = findElement(xpath); if (browserType == 2 || browserType == 5 || browserType == 6) {
try {
Actions builder = new Actions(browserCore);
builder.moveToElement(we).build().perform();
flag = true;
break;
} catch (Exception e) {
logger.error("Failed to mouseover " + xpath, e);
flag = false;
handleFailure(e.getMessage());
}
logger.info("Mouseover " + xpath);
} else if (browserType == 1 || browserType == 3) {
try {
for (int i = 0; i < 5; i++) {//DeadCode
Actions builder = new Actions(browserCore);
builder.moveToElement(we).build().perform();
logger.info("Mouseover " + xpath);
flag = true;
break;
}
}catch (Exception e) {
logger.error("Failed to mouseover " + xpath, e);
flag = false;
handleFailure(e.getMessage());
}
}
}
return flag;
}
});
}catch (Exception e){
handleFailure(e.getMessage());
}

分析了下,其实循环部分的第二次就不会再执行了,因编译器已经检查到执行后的flag的状态为true,所以给出了DeadCode的警告。而代码实际运行过程中也确实不会执行第二次。

举个例子:

if(true && true){
System.out.println("这里会一直被执行");
}else{
System.out.println("这里一直不会被执行");
}

上例中,因compiler 已经判定if的结果只会为true,所以else中的语句永远不会被执行,因此else中为DeadCode。

无法预判的语句

Boolean a = true;
Boolean b = true;
if(a && b){
System.out.println("这里会一直被执行");
}else{
System.out.println("这里一直不会被执行");
}

上例中,由于a 和 b是2个变量,编译器编译时,无法预判if的结果是true,因此不会警告else的内容为DeadCode。

Java compile时,提示 DeadCode的原因的更多相关文章

  1. eclipse创建Java项目时提示Open Associated Perspective?

    在eclipse中,原先使用python进行编程,需要新建java项目时,会提示如下信息: 消息框内翻译如下: Open Associated Perspective? --开放关联视角? This ...

  2. maven project中,在main方法上右键Run as Java Application时,提示错误:找不到或无法加载主类XXX.XXXX.XXX

    新建了一个maven project项目,经过一大堆的修改操作之后,突然发现在main方法上右键运行时,竟然提示:错误:找不到或无法加载主类xxx.xxx.xxx可能原因1.eclipse出问题了,在 ...

  3. mybatis逆向工程 mbg运行java代码时提示找不到MBG.xml的解决方法

    这里要写全路径才能找到文件

  4. 在Ubuntu中安装配置java后运行java -version时提示二进制文件不能执行

    因为jdk安装包有问题,试试32位的

  5. 在浏览器运行 java applet时遇到的一些问题及其解决方法

    运行 java applet时提示:您的安全设置已阻止本地应用程序运行,如何解决?如下图所示 这时候通过设置java的安全级别就可以了. 控制面板->程序->Java->安全 将安全 ...

  6. eclipse打开时提示:failed to create the java virtual machine

    Eclipse打开时提示: failed to create the java virtual machine 原因:C盘空间不够   编辑删除 处理:1.用金山清理临时文件: 2.用金山手机卫士连接 ...

  7. ubuntu myeclipse 启动时提示 A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avail ....

    jdk已经安装过但是启动eclipse时提示“A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avail  ...

  8. installshield制作的安装包卸载时提示重启动的原因以及解决办法

    原文:installshield制作的安装包卸载时提示重启动的原因以及解决办法 有时候卸载installshield制作的安装包程序,卸载完会提示是否重启电脑以完成所有卸载,产生这个提示的常见原因有如 ...

  9. Java byte类型转换成int类型时需要 & 0XFF的原因

    Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b  = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 ...

随机推荐

  1. POJ1218

    Problem  C Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) Total Su ...

  2. HDU-1527 取石子游戏

    http://acm.hdu.edu.cn/showproblem.php?pid=1527 交换  :可实现. if( n < m ) { n^=m; m^=n; n^=m; } (三)尼姆博 ...

  3. maya 操作自我整理(二)

    随身携带自己的maya习惯我们在一台电脑上设置好自己的使用习惯,包括自己定义的快捷键.标记菜单.界面颜色.工具架等信息,当换到另一个工作环境时再进行设置十分不便利,将自己的习惯随身带走有利于我们更快捷 ...

  4. asterisk 能打电话的配置

    若使用的是chan_sip.so模块,则在sip.conf里添加: [10]type=friend;context=phonescontext=publichost=dynamicsecret=123 ...

  5. Just a Hook

      Just a Hook 题目大意:原来有N个铜棍, 一个人有种能力可以把一个区间的棍变成铜,银或者金的,价值分别是1,2,3, 最后求出总价值,没啥好说的,赤裸裸的线段树: Time Limit ...

  6. [转载]通过jQuery的attr修改onclick

    var js = "alert('B:' + this.id); return false;"; // creates a function from the "js&q ...

  7. Hibernate常用接口

    Hibernate的接口类型 在了解了Hibernate的基本配置,映射文件后,道路已经铺平了.我们继续往前走.接下来,我们应该做的是了解Hibernate常用的接口,对Hibernate的工作方式进 ...

  8. JDBC基本知识

    JDBC的作用 JDBC为java访问数据库提供通用的API,可以为多种关系数据库提供统一访问.因为SQL是关系式数据库管理系统的标准语言,只要我们遵循SQL规范,那么我们写的代码既可以访问MySQL ...

  9. PHP+IIS7+PHPMangerForIIS搭建开发环境

    准备工作 1.安装IIS 2.安装php 3.安装phpmanager 准备工作做好后,开始搭建环境 1.在Internet信息服务管理器下找到PHPManager 2.点击Register new ...

  10. 对vpn的认识

    网上关于vpn的资料非常多,看后眼花缭乱,仍然感觉一片混沌.网上,网下參考一些资料后.试着理清一些概念问题,由于,概念理清了,找到门了,才不至于左右徘徊,一片混沌. 首先vpn,这个我们都知道叫虚拟专 ...