1.respondsTo方法判断对象是否存在指定方法

interface IHelp{
void helpMoveThings()
} class Man implements IHelp{
void helpMoveThings(){
println 'Man help move things'
}
} class WoMan implements IHelp{
void helpMoveThings(){
println 'WoMan help move things'
}
} class Elephant implements IHelp{
void helpMoveThings(){
println 'Elephant help move things'
} void eatSugarcane(){
println 'Elephant eat sugarcane'
}
} def takeHelp(helper){
helper.helpMoveThings()
if(helper.metaClass.respondsTo(helper, 'eatSugarcane')){
helper.eatSugarcane()
}
} takeHelp(new Man())
takeHelp(new WoMan())
takeHelp(new Elephant()) /*output
Man help move things
WoMan help move things
Elephant help move things
Elephant eat sugarcane
*/

2.向类中注入方法

def shoutString(String str){
println str.shout()
} str = 'hello'
str.metaClass.shout = {->toUpperCase()} shoutString(str)
/*output
HELLO
*/

Groovy学习笔记-动态类型的更多相关文章

  1. python3.4学习笔记(二) 类型判断,异常处理,终止程序

    python3.4学习笔记(二) 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 #引入外部模块 import xxx #random模块,randint(开始数,结束数) ...

  2. WPF-学习笔记 动态修改控件Margin的值

    原文:WPF-学习笔记 动态修改控件Margin的值 举例说明:动态添加一个TextBox到Grid中,并设置它的Margin: TextBox text = new TextBox(); t_gri ...

  3. 02-Swift学习笔记-元组类型

    02-Swift学习笔记-元组类型 元组类型由N个任意类型的数据组成(N>=0) 元组类型的数据称为"元素" eg var size = (x:100 , y:100) si ...

  4. Java学习笔记——动态代理

    所谓动态,也就是说这个东西是可变的,或者说不是一生下来就有的.提到动态就不得不说静态,静态代理,个人觉得是指一个代理在程序中是事先写好的,不能变的,就像上一篇"Java学习笔记——RMI&q ...

  5. c语言学习笔记 - 枚举类型

    今天学习了c语言的枚举类型的使用,可能是PHP里没使用过,开始看的时候还是觉得有点怪,后来做了下例子才理解,这里做个笔记记录一下. #include <stdio.h> enum anim ...

  6. Groovy学习笔记(二)

    在上一篇文章中我们主要学习了如何搭建Groovy开发环境,为我们的Groovy之旅做好了准备工作,不知道你是否准备好了?接下来我们就一起看看Groovy与我们熟悉的Java有什么异同. Groovy是 ...

  7. Mybatis进阶学习笔记——动态代理方式开发Dao接口、Dao层(推荐第二种)

    1.原始方法开发Dao Dao接口 package cn.sm1234.dao; import java.util.List; import cn.sm1234.domain.Customer; pu ...

  8. c++学习笔记—动态内存与智能指针浅析

    我们的程序使用内存包含以下几种: 静态内存用来保存局部static对象.类static数据成员以及定义在任何函数之外的变量,在使用之前分配,在程序结束时销毁. 栈内存用来保存定义在函数内部的非stat ...

  9. Office365学习笔记—Lookup类型加载条目过多解决方案

    1,随着接触的项目越来越多,遇到的各种奇葩的问题也越来越多,不得不说,SharePoint是个好东西,提高了开发效率,简化了很多基础的功能.但是令人头疼的问题是,当你想做个稍微复杂点的功能,就不得不研 ...

随机推荐

  1. NodeJS基础总结(一)

    NodeJS官网网址:https://nodejs.org/en/ 使用require方法加载fs核心模块 var fs = require('fs'); 一.读取文件//   第一个参数就是尧读取的 ...

  2. 2>&1 什么意思

    1.  0 表示stdin标准输入 2.  1 表示stdout标准输出 3.   2表示stderr标准错误 意思是:把标准错误重定向到标准输出?

  3. Linux系统优化及基础命令

    1.Linux系统优化及基础命令 2. vim编辑器 vim 操作命令 在命令模式下操作 pageup 往上翻页(重要指数****)pagedown 往下翻页(重要指数****)H 移动到屏幕首行gg ...

  4. Log4Net 记录错误日志。

    点击进入推荐链接 1.先添加log4net.dll的引用.   2.在程序入口的地方(Gloabal文件)加上这句log4net.Config.XmlConfigurator.Configure(). ...

  5. xibai的PCI卡在英文系统上安装报错

    通过购买时自带的光驱,在里面直接找相对应的型号的驱动,直接安装,即可 不要通过电脑管理,然后更新驱动的这种方式,会报错

  6. [转] jquery作者John Resig编写的微模板引擎:JavaScript Micro-Templating

    I've had a little utility that I've been kicking around for some time now that I've found to be quit ...

  7. RPA简介

    开篇: 公司正在全面推广RPA,正好借此机会学习一下,发现国内对RPA的了解较少,萌生了在博客园开博,同时锻炼一下自己的输出能力,纯笔记,如有不足之处,请指正,共勉. 阅读目录: 1. 什么是RPA ...

  8. 第二课 ---git时光穿梭(版本回退)

    1.  git  status  掌握仓库当前的状态. 2.  git  diff 查看修改的内容部分. //版本回退: 1.查看更新的历史记录. git log git log --pretty=o ...

  9. [BZOJ1596]电话网络

    Problem 给你一棵树,可以在每个点上选择造塔或不造,每座塔可以覆盖这个节点和相邻节点,问覆盖整棵树的最小塔数. Solution 看到这道题的第一眼,我就觉得是一题贪心题,但看见出题的时候分类在 ...

  10. Linux快捷键总结

    使用Linux很久了,现对经常用到的快捷键做一个总结: 最重要的一个当然是tab了 [root@localhost ~]# cd /etc/sys sysconfig/ sysctl.conf sys ...