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

时间:2011-03-29 01:37:21

标签: 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

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

3 个答案:

答案 0 :(得分:23)

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

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

  • 块限制在其中声明的任何变量的范围; e.g。

    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;
    }
    

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

  • 可以使用块来附加标签。

    HERE : {
        ...
        break HERE;  // breaks to the statement following the block
        ...
    }
    

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

答案 1 :(得分:5)

public void stuff() {
  int i = 48;

  { 
    int i = 21;
    System.out.println(i); // prints 21
  }
  System.out.println(i); // prints 48
}

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

答案 2 :(得分:-1)

它定义括号内的变量范围,有些人会说它更清晰或更有条理我确定。

我个人不会推荐它。