Get a list of classes lambdas

后端 未结 2 1201
刺人心
刺人心 2020-12-17 06:52

In Java 8 it looks like the lambdas of a class are kept in an array. For example, lets say we have this class:

public class LambdaFactory {
    public Suppli         


        
2条回答
  •  南方客
    南方客 (楼主)
    2020-12-17 07:09

    The Java Language Specification states

    At run time, evaluation of a lambda expression is similar to evaluation of a class instance creation expression, insofar as normal completion produces a reference to an object. [...]

    Either a new instance of a class with the properties below is allocated and initialized, or an existing instance of a class with the properties below is referenced.

    [...]

    These rules are meant to offer flexibility to implementations of the Java programming language, in that:

    • A new object need not be allocated on every evaluation.
    • [...]

    As such, it is up to a compiler or run time environment to decide what should be returned when a lambda expression is evaluated.

    My question is, can I get ahold of the lambdas in a class? I don't have any reason to do so, I just like dissecting things

    You can think of a lambda expression as any other class constant, a String, an integer literal, etc. These are constants that appear in the constant pool of a .class file. These are references to objects that are created and exist at run time. There is no way to refer to the actual objects from a class' constant pool.

    In the case of a lambda, it wouldn't be helpful anyway because it might not actually be the same object.

提交回复
热议问题