关于`变量(var-name)可能尚未初始化

时间:2015-07-05 18:16:04

标签: java error-handling

Statement 1

在上面的代码中,rdr1会产生以下错误

  

变量Statement 2可能尚未初始化

Statement 1成功编译。

那么,为什么在Statement 2中没有产生与 <g transform="rotate(90,26.17,26.17)"> <polyline points="0,6.326886 178.017424,6.326886 178.017424,45.888910 0,45.888910" fill="green"></polyline> <polyline points="178.017424,7.892542 257.597148,7.892542 257.597148,44.323254 178.017424,44.323254" fill="blue"></polyline> </g> 相同的错误?

2 个答案:

答案 0 :(得分:1)

在陈述2中,rdr2本质上是一种方法的形式论证。调用方法时会初始化它。有关声明2发生了什么的更多信息,请参阅Lambda Quick StartLambda Expressions教程。

答案 1 :(得分:0)

应在使用前初始化局部变量(在方法体内声明的变量)rdr1。不过这条规则  不适用于类变量(实例变量)。它们获取默认类型值。

rdr2而言,调用方法时会初始化。有关 Lambda Exp here

的更多信息
  public static void main(String args[]) throws IOException
        {
            Reader rdr1; // local variable should be initialized before use

            int read = rdr1.read();    //Statement 1

            MyIOAction myIO = (rdr2) -> // initialized when method is called.Lambda Exp.
            {
                int ch = rdr2.read();    //Statement 2
            };
        }