【发布时间】:2023-03-14 20:56:02
【问题描述】:
我刚刚发现了 Java 中的本地类:
public final class LocalClassTest
{
public static void main(final String[] args) {
for(int i = 10; i > 0; i--) {
// Local class definition--declaring a new class local to the for-loop
class DecrementingCounter {
private int m_countFrom;
public DecrementingCounter(final int p_countFrom) {
m_countFrom = p_countFrom;
}
public void count() {
for (int c = m_countFrom; c > 0; c--) {
System.out.print(c + " ");
}
System.out.println();
}
}
// Use the local class
DecrementingCounter dc = new DecrementingCounter(i);
dc.count();
}
}
}
我确实看到了这条评论:Advantages of Local Classes,其中列出了本地类相对于匿名内部类的一些巨大优势。
我的问题是,在很多情况下,这种技术似乎不会比非匿名内部类具有优势。我的意思是:如果您的类仅在方法的范围内有用,您将使用本地类。但是当您的方法变得如此复杂时,您需要开始在其中定义自定义类,它们可能已经太复杂了,需要拆分。到那时,您的本地类必须成为内部类,对吗?
有哪些本地类比内部类更受欢迎且不涉及超复杂方法(应该避免)的示例?
【问题讨论】:
-
啊啊啊啊啊……我的眼睛疼。 :)
-
本地类在循环中声明????你疯了吗?您无需这样做,因为您的类不访问任何循环局部变量。这个类甚至可以很容易地外部化
-
@eugener:好吧,我想它应该在循环之外声明,但这是一个人为的例子,无论哪种方式似乎都同样荒谬......
-
尝试使用已知的“内部类”名称而不是“本地类”...
-
我喜欢循环内的课程。没有机会在其他地方意外使用它:)