例如,这是合法的:
class NAME {
method {
method {}
}
}
Run Code Online (Sandbox Code Playgroud)
效果会是什么?是否涉及任何特定的语法?
Osc*_*Ryz 43
更新 由于Java 8方法可以使用lambdas嵌套,请参阅另一个问题.
此答案适用于Java 8之前的Java版本
原答案如下:
java中的方法可以嵌套[...]吗?
不,那是不可能的.
你能得到的最接近的是:
class Name {
void methodOne() {
class InnerClass {
void methodTwo() {
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
也就是说,在方法中定义的内部类中定义的第二种方法.
您可以在内部类中声明方法static,因此您不必调用 new
没有.
一种解决方案就是将您想要调用的方法声明为"父"方法之外的私有方法 - 如果您真的很烦,可以使用一些命名约定来表明它们"属于""父"方法.
您可以考虑的另一件事 - 在程序员中似乎并不广为人知 - 是您可以声明任意范围块并对其进行标记,然后使用break来突破该块.
所以以下是完全合法的Java:
void method() {
myInnerMethod : {
// do some stuff
if (condition) {
break myInnerMethod;
}
// do some more stuff
}
}
Run Code Online (Sandbox Code Playgroud)
当然,范围块实际上不是一种方法,但在某些情况下,它可以用来做你想要的"内部方法".