我见过许多开发人员method local class
在他们的代码中使用(我不是指匿名类)。
例如(在安卓中):
private void myFunc()
{
class Worker extends AsyncTask<Void, Void, Void>
{...}
new Worker();
}
在设计和运行时这样做有什么优缺点?多次调用方法时使用本地类不好吗?
任何阅读代码的人都可以立即知道方法本地类没有在其他任何地方使用——它只能在该方法内部使用。因此,如果将来需要重构,开发人员将知道更改只会影响该方法,而不影响程序中的任何其他内容。考虑一个具有数千个类的企业级应用程序——这些额外的信息非常有价值。
如前所述,封装是一个原因,也是为了不必为几行创建一个新文件,这些行本身可能没有足够的意义。在其他语言中,传递行为(高阶函数、lambda 表达式等)更容易和更常见,而不必在新文件中编写新类。
您发布的这是 Java 必须完成的最便宜的方法之一......到目前为止。Java 8 似乎带来了其中一些其他特性。