Java不支持“直接”嵌套方法。许多功能性编程语言都在方法内部支持方法。但是,您可以通过定义本地类(方法内的类)来实现Java 7或更早版本中的嵌套方法功能,从而进行编译。在Java 8和更高版本中,您可以通过lambda表达式来实现。让我们看看它是如何实现的。
方法1(使用匿名子类)
它是一个没有名称的内部类,并且仅为其创建一个对象。当使用某些“扩展名”(例如类或接口的重载方法)创建对象的实例时,匿名内部类可能很有用,而不必实际对类进行子类化。有关匿名内部类的更多详细信息,请单击此处
// Java program implements method inside method
public class GFG {
// create a local interface with one abstract
// method run()
interface myInterface {
void run();
}
// function have implements another function run()
static void Foo()
{
// implement run method inside Foo() function
myInterface r = new myInterface() {
public void run()
{
System.out.println("geeksforgeeks");
};
};
r.run();
}
public static void main(String[] args)
{
Foo();
}
}
输出:
geeksforgeeks
方法2(使用本地类)
您也可以在本地类中实现方法。在方法内部创建的类称为局部内部类。如果要调用本地内部类的方法,则必须在方法内部实例化此类。
// Java program implements method inside method
public class GFG {
// function have implementation of another
// function inside local class
static void Foo()
{
// local class
class Local {
void fun()
{
System.out.println("geeksforgeeks");
}
}
new Local().fun();
}
public static void main(String[] args)
{
Foo();
}
}
输出:
geeksforgeeks
方法3(使用lambda表达式)
Lambda表达式基本上表示功能接口的实例(具有单一抽象方法的接口称为功能接口。示例为Java.lang.Runnable)。 lambda表达式实现唯一的抽象函数,因此实现了功能接口。有关表达的更多信息,请单击此处
// Java program implements method inside method
public class GFG {
interface myInterface {
void run();
}
// function have implements another function
// run() using Lambda expression
static void Foo()
{
// Lambda expression
myInterface r = () ->
{
System.out.println("geeksforgeeks");
};
r.run();
}
public static void main(String[] args)
{
Foo();
}
}
输出:
geeksforgeeks