Kotlin(六)'::'

Java8中新增的函数式编程

使用  '::'  引用代表的都是一个执行过程,即一个方法,而非方法执行后获得的实例


1. 可通过两个冒号来实现对某个类的方法类型进行引用(引用的是类型,并非方法的执行结果)

       a.  若引用当前类中的方法的类型,可直接使用'::XXX'格式进行引用(注意,方法名后没有括号)

       b. 或使用某对象加'::'来引用某实例对象的方法(形如a::bb)

        注意:XXX()   和   ::XXX 的执行效果完全不同,XXX()为调用了一个函数,会真正执行,而::XXX仅声明了一种类型,由于未给任何变量赋值,即无法使用,编译时应该会被去掉吧?

         故:此种引用方式似乎除了高阶函数中使用没有别的用了?

2. 可以通过这种语法来定义一个类的构造方法引用变量

    例:class Book(name:String){}

            val getBool=::Book(此处引用的是Book的构造方法的类型,getBook的类型为(name:String)->Book)

            使用:getBook("name of Book").name  此时得到的是一个Book对象的name字段对应的字符,即 ‘name of book’。

    其他示例:

定义Book类
各种使用方式(正确及不正确的)
类变量加‘::’的使用

此处Book::name 是一个(Book)->String 类型的函数,即map()此处应该是个高阶函数


    使用:‘::’只表示引用其类型,与函数相关,只用于声明类型,不能企图获取其执行后的结果,若要获取执行结果,需要再通过调用声明的变量实现。与变量相关,获取到的为一个函数类型定义,非具体值,无法获取变量内容,需要使用'.'连接符,可以通过调用构造过程后通过‘.'连接符获取类变量值

你可能感兴趣的:(Kotlin(六)'::')