小编use*_*148的帖子

在Eclipse/Intellij中对Java进行"增量编译"的频率是多少?

我知道Eclipse使用它自己的Java编译器(ECJ),它能够执行增量编译.从我发现的大多数读数来看,这个编译通常是由保存操作触发的,但这似乎与在输入单个单元/单词代码后几乎立即得到编译错误的错误反馈这一事实相匹配.我没有找到任何文档或文献说明这是什么粒度被触发(即每个单词,字母,行)?是否还有其他背景代码分析?虽然除了语法中的错误检测之外,我看不出它如何能够检测只能通过编译过程显示的语义错误.

java eclipse incremental-compiler ecj

6
推荐指数
1
解决办法
413
查看次数

如何评估此switch语句?

编译器如何解释此switch语句?我假设switch语句中的内容是(41),为什么它会转到案例2?

    int i = 4;
    int j = 2;

    switch(i++-j) {         //switch is evaluted to be (41)??
    case 3: i++; break;
    case 1: j++; break;
    case 2: j+=2; break;
    case 5: i+=2; break;
    default: i +=5; break;
    }

    System.out.println(i);  //Prints out 4
    System.out.println(j);  //Prints out 5
Run Code Online (Sandbox Code Playgroud)

java switch-statement

3
推荐指数
1
解决办法
103
查看次数

可选地用Java返回一些东西

我有一段时间没有编程,所以我有点生疏了.我已经被困在这个问题上几个小时了,我想知道有什么选择可以选择在java中返回一些东西(或者当满足某个条件时跳回到调用方法 - 基本上doBranch方法使用parseStatementList等等.我在过去几个小时内以各种方式更改了parseStatementList,但这对于它可能无效的原因没有意义.

呼叫代码:[基本上是END,BLAH,BOO]在SKIP_START_SET中.然而,parseStatement将这些作为普通单词处理,因此如果BOO在字符串或某种类型的列表中,它将在第一个doBranch上丢失.

    private C1 parseSelectStatement( TokenSet recoverSet) {

    C2 selectCond = doBranch( recoverSet );

    while (tokens.isMatch(BLAH)) {          
        match(BLAH)         
        C2 result = doBranch ( recoverSet );
    } 


    if (tokens.isMatch(BOO)) {
        match(boo)
        result1 = doBranch( recoverSet );
    }

    match( END )

    return new StatementNode.SelectNode(selectCond, result, result1);

}

private C2 doBranch(TokenSet recoverSet) {
    ExpNode cond = parseCondition(recoverSet.union(Token.KW_THEN));

    // The code jumps to below if words in SKIP_START_SET are found in the statement,
    // otherwise it will complete and return the new …
Run Code Online (Sandbox Code Playgroud)

java

1
推荐指数
1
解决办法
122
查看次数