当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java Method within用法及代码示例


Java不支持“directly”嵌套方法。许多函数性编程语言都支持方法中的方法。但是,您可以通过定义本地类(方法内的类)来实现Java 7或更早版本中的嵌套方法函数,从而进行编译。在Java 8和更高版本中,您可以通过lambda表达式来实现。让我们看看它是如何实现的。

方法1(使用匿名子类)
它是一个没有名称的内部类,并且仅为其创建一个对象。当使用某些“extras”来创建对象的实例(例如,类或接口的重载方法)而不必实际子类化时,匿名内部类可能很有用。有关匿名内部类的更多详细信息,请单击此处

// 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


相关用法


注:本文由纯净天空筛选整理自Rajput-Ji大神的英文原创作品 Method within method in java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。