java获取引用名_在运行时Java中获取方法引用的名称是否可能(如何)?[复制品]

最近我使用了很多方法引用和lambda,我想知道在运行时是否可以打印以筛选lambda IE的名称的源代码,只是出于调试的原因。我在getname()中调用getClass()可能会使用反射,但我找不到一个方法来查找原始源引用的名称。

我有一个功能接口,比如:

@FunctionalInterface

public interface FooInterface {

// function etc etc irrelevant

public void method();

public default String getName() {

// returns the name of the method reference which this is used to define

}

}

然后假设我希望测试运行接口,并将功能接口的源文件打印到屏幕上。

public static void doStuff(FooInterface f) {

// prints the lambda name that is used to create f

System.out.println(f.getName());

// runs the method itself

f.method();

}

如果我这样做:

doStuff(Foo::aMethodReference);

它应该在屏幕上打印类似“amethodReference”的内容,这样我就可以知道运行时运行的是哪些方法,以什么顺序等等。

我很怀疑这是可能的,考虑到lambda不是一个物体,但嘿,我想可能有一个解决办法。此外,Eclipse调试工具只是说它是一个lambda,没有任何其他信息,lambda是否保留了这些信息?还是在运行时全部丢失?

干杯。(如果有什么不同的话,我使用的是JDK 11)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值