美文网首页
Painless Script数据类型

Painless Script数据类型

作者: Ombres | 来源:发表于2019-05-15 21:03 被阅读0次
    官方文档:https://www.elastic.co/guide/en/elasticsearch/painless/current/index.html

    数据类型

    分为原始(primitive)、引用(reference)、动态(dynamic)三种类型,其前两种类型与Java基本相同。

    原始类型(primitive)

    原始类型用来表示构建在JVM中的基本数据,分配到非堆内存中。包括8种原始类型,byteshortcharintlongfloatdoubleboolean

    每种原始类型一个相应的引用类型,在使用过程中可以自动拆装箱,基本与Java一致,但是有特殊的一点,原始类型可以直接装箱成引用类型,然后调用引用类型的方法。如下代码:

    int i = 1;    
    i.toString();       // int类型的i会自动装箱为Integer,然后调用Integer类型的toString()方法
    
    引用类型(reference)

    引用类型是存储在堆中,默认值为 null

    用法与Java中的引用类型基本相同,包含有静态成员字段、非静态成员字段、静态成员方法、非静态成员方法、构造器。

    支持继承,用法与Java的继承基本相同。

    动态类型(dynamic)

    def 关键字定义 ,可以表示为原始类型和引用类型 ,默认值为 null。在使用的过程中 def 表示基本类型时其实本质上还是引用类型。

    def x = 1;               // Declare def variable x and set it to the
                             //   literal int 1
    def l = new ArrayList(); // Declare def variable l and set it a newly
                             //   allocated ArrayList
    

    def 对于性能有一定的影响,如果要高效的使用脚本,写成静态类型更加合适。

    特殊数据类型

    与Java基本一致,不再具体介绍

    String
    void
    Array

    相关文章

      网友评论

          本文标题:Painless Script数据类型

          本文链接:https://www.haomeiwen.com/subject/ryaraqtx.html