📜  Java方法中的方法

📅  最后修改于: 2021-05-20 05:35:17             🧑  作者: Mango

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