【发布时间】:2026-01-14 10:55:01
【问题描述】:
对于下面的代码示例,当我们执行代码时会打印:
来自实例方法
来自本地内部类
现在,如果我只想执行本地内部类方法 m2() 并希望输出为:
来自本地内部类
class A {
void m1() {
class B {
void m2() {
System.out.println("from local inner class");
}
}
System.out.println("from instance method");
B b = new B();
b.m2();
}
public static void main(String[] args) {
A a = new A();
a.m1();
}
}
当绝对需要本地内部类时,具体的用例是什么,如果没有它,某些功能可能无法实现。
【问题讨论】:
-
如果你只想执行一个
println那么... err... 删除另一个? -
我在想,有没有办法只执行 m2() ?
-
方法本地的想法是它应该只在该方法中使用。因此,如果您想从外部
m1调用m2,为什么要将B本地化为m1? -
“我想知道,有没有办法只执行 m2() ?”从技术上讲,是的。你可以让
m1返回Object的B,然后使用反射在m1之外调用m2,我想。 -
m2 在 m1 方法之外不可见。只执行 m2 向 m1 方法添加一个布尔参数并使用 if 语句来决定是只需要执行 m2 还是整个 m1
标签: java inner-classes