为什么java允许在方法体内进行类定义?

时间:2014-02-13 21:48:05

标签: java class methods

出于好奇,任何人都知道是什么让人们认为在Java中的方法中允许类定义会有所帮助吗?

例如,我可以这样做:

public void foo()
{
  class Bar
  {
  }
}

2 个答案:

答案 0 :(得分:0)

http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

略微修改

为什么要使用本地课程?

使用本地类的令人信服的理由包括:

这是一种逻辑分组仅在一个方法中使用的类的方法:如果一个类只对一个方法有用,那么将它嵌入到该方法中是合乎逻辑的并保持两个方法一起。嵌套这样的“辅助类”使得它们的包更加简化。

它增加了封装:考虑一个私有帮助器方法foo()和一个B类,其中B需要访问foo()的参数。通过将类B隐藏在foo()中,foo()可以保持私有,B可以访问foo()的参数。此外,B本身可以隐藏在外面。

它可以带来更易读和可维护的代码:在方法中嵌套小类会使代码更接近使用它的位置。

答案 1 :(得分:0)

这种东西通常用于创建匿名内部类,尽管它们大多会被Java 8中的闭包所取代。

它们对于侦听器非常有用,其中处理方法结果的代码现在可以在与调用方法的代码相同的位置编写。

基本上封装说你应尽可能多地保留你的程序中尽可能多的限制。封装得越多,就越容易维护程序,因为意外的依赖关系就会减少。