方法内有多个打开和关闭的花括号. - Java

Pah*_*ora 22 java

 public class MyTestClass {

    public static void main(String[] args) {
        new MyTestClass().myMethod();
    }

    public void myMethod(){
        {
        //do something 
        }
        {
            //do something 
        }
        {
            //do something 
        }
    }//method close

}//class close
Run Code Online (Sandbox Code Playgroud)

这样做有什么好处?我见过这种代码.

Ste*_*n C 25

做这种事情并不常见,我不会这样做.

那些内部块(即{ ... })可以用于几个目的:

  • 块限制在其中声明的任何变量的范围; 例如

    public void foo() {
        int i = 1;
        { 
            int j = 2;
        }
        // Can't refer to the "j" declared here.  But can declare a new one.
        int j = 3;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    但是,我不建议这样做.IMO,最好使用不同的变量名称或将代码重构为更小的方法.无论哪种方式,大多数Java程序员将视{}恼人视觉上的混乱.

  • 块可用于附加标签​​.

    HERE : {
        ...
        break HERE;  // breaks to the statement following the block
        ...
    }
    
    Run Code Online (Sandbox Code Playgroud)

    但是,在实践中,你几乎看不到带标签的断言.而且因为它们非常不寻常,所以它们往往会使代码的可读性降低.


ilu*_*uxa 5

public void stuff() {
  int i = 48;

  { 
    int i = 21;
    System.out.println(i); // prints 21
  }
  System.out.println(i); // prints 48
}
Run Code Online (Sandbox Code Playgroud)

基本上,这是一种创建小于整个功能的范围的方法......好处?让人们在理解之前更长时间地盯着你的代码... IMO它的风格很差,应该避免

  • 是的,那个类是2000多行,并且它有600多行的单独方法,它有超过10个参数的方法,它几乎没有任何Javadoc ...我不会效仿 (4认同)
  • 这在Java中是不正确的.您无法重新声明变量. (4认同)
  • 代码出错,编译器将发出错误:在Java中,您无法在嵌套范围内重新声明局部变量. (2认同)