Painless Script数据类型

2019-05-15  本文已影响0人  Ombres
官方文档: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
上一篇下一篇

猜你喜欢

热点阅读