加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy优势2——使用call方法

发布时间:2020-12-14 16:42:02 所属栏目:大数据 来源:网络整理
导读:Groovy优势2——使用call方法 在Groovy中我们给类可以增加call方法,然后隐式调用call方法。调用时,仅需输入括号和可选的参数,使用Groovy 写DSL尤其有用。同时可以增加多个带不同参数的call方法实现重载,在运行时根据参数决定。 代码示例 下面示例代码定义

Groovy优势2——使用call方法

在Groovy中我们给类可以增加call方法,然后隐式调用call方法。调用时,仅需输入括号和可选的参数,使用Groovy 写DSL尤其有用。同时可以增加多个带不同参数的call方法实现重载,在运行时根据参数决定。

代码示例

下面示例代码定义了User类,带了call方法的实现。调用时并没有输入方法的名称,甚至没有使用括号,仅传递参数。

class User {
    String userName;
    String address;

    def call(final String userName){ this.userName = userName this } def call(final Map data){ userName = data.get("userName") ?: userName address = data.get("address") ?: address this } def call(final Closure runCode){ runCode this } static void main(String [] args){ User user = new User( userName:"tommy",address:"xuzhou") user "jack" assert user.userName == "jack" // call with string parameter Map data = [userName:"tommy",address:"shanghai"] user data // call with map parameter assert "tommy" == user.userName assert "shanghai" == user.address //true user{ println it.address // shanghai call with Closure } //call with Closure def json = user { new groovy.json.JsonBuilder(["user": ["name": it.userName,"address": it.address]]).toString() } assert json == '{"user":{"name":"tommy","address":"shanghai"}}' } }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读