java内部方法_Java是否支持内部/本地/子方法?

本文介绍了Java 8中引入的Lambdas(匿名函数表达式)特性,展示了如何使用Lambdas简化代码并提供了与Java 7及之前版本的对比。此外,还探讨了Java中不支持直接嵌套方法的原因,并给出了通过局部类实现类似功能的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDK 8引入了lambdas(匿名函数表达式),您可以像这样解决它:

Function trible = s -> s+s+s;

System.out.println(trible.apply("X"));           // prints XXX

(JDK 7及更低版本)

不,Java不支持“直接”嵌套方法。(尽管大多数功能语言都支持,包括一些JVM语言,例如Scala和Clojure!)

虽然仅供参考;你可以(方法中的类)定义局部类,所以这确实编译

class SubFunction {

private String drawTribleX(){

// *** move trible(t) inside drawTribleX() ***

class Trible {

private String trible(String t){

return t + t + t;

}

}

return new Trible().trible("X");

}

public static void main(String[] args){

SubFunction o = new SubFunction();

System.out.println(o.drawTribleX());

}

}

请注意,尽管本地类有一些限制

3.11.2。本地班级限制

本地课程受以下限制:

本地类仅在定义它的块内可见;它永远不能在该块之外使用。

本地类不能声明为公共,保护,私有或静态。这些修饰符用于类的成员;局部变量声明或局部类声明不允许使用它们。

类似于成员类,并且出于相同的原因,局部类不能包含静态字段,方法或类。唯一的例外是声明为static和final的常量。

接口不能在本地定义。

像成员类一样,本地类不能与其任何封闭类具有相同的名称。

如前所述,局部类可以使用其范围内的局部变量,方法参数甚至异常参数,但前提是必须将这些变量或参数声明为final。这是因为本地类实例的生存期可能比定义该类的方法的执行时间更长。因此,本地类必须具有其使用的所有本地变量的私有内部副本(这些副本由编译器自动生成)。确保局部变量和私有副本始终相同的唯一方法是坚持认为局部变量是最终变量。

因此,如您所见,在这些情况下,首选第一个选项(无嵌套方法)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值