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
相关用法
- Java Method类 isDefault()用法及代码示例
- Java Method类 getDefaultValue()用法及代码示例
- Java Method类 getAnnotatedReturnType()用法及代码示例
- Java Method类 getParameterAnnotations()用法及代码示例
- Java Method类 getReturnType()用法及代码示例
- Java Method类 getParameterTypes()用法及代码示例
- Java Method类 getGenericParameterTypes()用法及代码示例
- Java Method类 toGenericString()用法及代码示例
- Java Method类 hashCode()用法及代码示例
- Java Method类 getModifiers()用法及代码示例
- Java Method类 getDeclaredAnnotations()用法及代码示例
- Java Method类 getAnnotation()用法及代码示例
- Java Method类 isVarArgs()用法及代码示例
- Java Method类 getDeclaringClass()用法及代码示例
- Java Method类 getExceptionTypes()用法及代码示例
注:本文由纯净天空筛选整理自Rajput-Ji大神的英文原创作品 Method within method in java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。