Groovy学习(二):GDK初探
概念
Groovy扩展了JDK,这些扩展称之为GDK,下面的例子展示了GDK的能力。
在java中可以使用java.lang.Process与系统交互。假设我们要在代码中查看系统中Groovy的版本。
案例
java实现系统交互
class helloJava {public static void main(String[] args) {Process proc = Runtime.getRuntime().exec("groovy -v");BufferedReader result = new BufferedReader(new InputStreamReader(proc.getInputStream()))String line;while ((line = result.readLine()) != null){System.out.println(line);}}
}
运行结果:
Groovy Version: 2.5.7 JVM: 1.8.0_181 Vendor: Oracle Corporation OS: Mac OS X
我们可以发现,这段代码的核心语句只是“groovy -v”这一条命令,然而为了执行这一条命令用java代码却大费周章,这还不算代码中的异常处理。而由于Groovy的动态能力,GDK为String类型扩展了excute()方法。GDK使和系统交互变得异常简单。
Groovy实现系统交互
println "groovy -v".execute().text
运行结果:
Groovy Version: 2.5.7 JVM: 1.8.0_181 Vendor: Oracle Corporation OS: Mac OS X
扩展
上面说了java中可以使用java.lang.Process与系统交,可代码却使用的Runtime.getRuntime().exec()方法来获取Process类。
查看Runtime类的源代码可以看到exec方法的实现:
public Process exec(String[] cmdarray, String[] envp, File dir)throws IOException {return new ProcessBuilder(cmdarray).environment(envp).directory(dir).start();}
我们当然也可以手动写上述代码,不过利用Runtime.getRuntime().exec()肯定更加方便而已。
Groovy学习(二):GDK初探相关推荐
- C#多线程学习(二) 如何操纵一个线程
C#多线程学习(二) 如何操纵一个线程 原文链接:http://kb.cnblogs.com/page/42529/ [1] C#多线程学习(二) 如何操纵一个线程 [2] C#多线程学习(二) 如何 ...
- spring security 学习二
spring security 学习二 doc:https://docs.spring.io/spring-security/site/docs/ 基于表单的认证(个性化认证流程): 一.自定义登录页 ...
- STL源码剖析学习二:空间配置器(allocator)
STL源码剖析学习二:空间配置器(allocator) 标准接口: vlaue_type pointer const_pointer reference const_reference size_ty ...
- mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...
MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...
- OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack()
OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack() 参考博客: Harris角点检测原理详解 Harri ...
- OpenCV学习(二十二) :反向投影:calcBackProject(),mixChannels()
OpenCV学习(二十二) :反向投影:calcHist(),minMaxLoc(),compareHist() 参考博客: 反向投影backproject的直观理解 opencv 反向投影 颜色直方 ...
- OpenCV学习(二十一) :计算图像连通分量:connectedComponents(),connectedComponentsWithStats()
OpenCV学习(二十一) :计算图像连通分量:connectedComponents(),connectedComponentsWithStats() 1.connectedComponents() ...
- OpenCV学习(二十) :分水岭算法:watershed()
OpenCV学习(二十) :分水岭算法:watershed() 参考博客: OpenCV-分水岭算法 图像处理--分水岭算法 OpenCV学习(7) 分水岭算法(1) Opencv分水岭算法--wat ...
- OpenCV与图像处理学习二——图像直方图与色彩空间
OpenCV与图像处理学习二--图像直方图与色彩空间 2.4 图像直方图(Image Histogram) 2.4.1 直方图的绘制 2.4.2 三通道直方图绘制 2.5 颜色空间 2.5.1 RGB ...
- PyTorch框架学习二十——模型微调(Finetune)
PyTorch框架学习二十--模型微调(Finetune) 一.Transfer Learning:迁移学习 二.Model Finetune:模型的迁移学习 三.看个例子:用ResNet18预训练模 ...
最新文章
- docker commit (从容器创建一个新的镜像)
- 比特币官网管理者Cobra认可BCH支付属性
- 关于 performSelector 的一些小探讨
- ConcurrentHashMap源码分析(1)——JDK1.7的实现
- WINCE cvrtbin命令简介
- Java之StringBuffer类
- Postman 最被低估的功能
- 复现经典:《统计学习方法》​第 11 章 条件随机场
- CSS 实例之翻转图片
- 网管,待遇为何如此差劲?
- 从 Hello World 开始
- pg与oracle区别,PostgresQL 学习记录之与oracle区别(一)
- Linux系统编程--2(环境变量,进程控制)
- Web框架——Flask系列之设置和读取cookie(十五)
- Android 窗口Dialog 代码以及使用
- android的listview点击获取当前选项值的方法
- Controller之间传递数据:协议传值
- (26)基于cookie的登陆认证(写入cookie、删除cookie、登陆后所有域下的网页都可访问、登陆成功跳转至用户开始访问的页面、使用装饰器完成所有页面的登陆认证)...
- python房屋租赁管理系统设计与实现报告_房屋租赁管理系统设计毕业论文
- rgb转hsv (Verilog)
热门文章
- 基于SAAS的都昌商业平台设计
- [半监督学习] In Defense of Pseudo-Labeling: An Uncertainty-Aware Pseudo-label Selection Framework for SSL
- 计算机操作系统存在的意义,电脑操作系统的作用
- 三菱Q系列通过wifi联服务器,三菱Q系列PLC以太网通讯,三步可以搞定!
- 微信公众号JSAPI支付对接
- 疾病地图制作_助力旅游业复工复产,这份山西中医文旅地图请收好,就在你家门口...
- 看雪学院将举办《安全开发者峰会》,有这11个安全议题
- 齐次线性方程组、齐次方程、齐次多项式
- 关于react、vue的一些问题
- PyMOL免费下载及安装教程【Win版】