因为知道他底层还是在jvm上运行的所以应该有个函数入口main函数于是反编译看看他的class
在d盘下新建:Hello.groovy
println 'hello world'
groovyc Hello.groovy
生成Hello.class
反编译后:
import groovy.lang.Binding;
import groovy.lang.Script;
import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
import org.codehaus.groovy.runtime.callsite.CallSite;
import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
public class Hello extends Script
{
public Hello()
{
Hello this;
CallSite[] arrayOfCallSite = $getCallSiteArray();
}
public Hello(Binding arg1)
{
Binding context;
CallSite[] arrayOfCallSite = $getCallSiteArray();
ScriptBytecodeAdapter.invokeMethodOnSuperN($get$$class$groovy$lang$Script(), this, "setBinding", new Object[] { context });
}
public static void main(String[] args)
{
CallSite[] arrayOfCallSite = $getCallSiteArray();
arrayOfCallSite[0].call($get$$class$org$codehaus$groovy$runtime$InvokerHelper(), $get$$class$Hello(), args);
}
public Object run()
{
CallSite[] arrayOfCallSite = $getCallSiteArray(); return arrayOfCallSite[1].callCurrent(this, "hello world"); return null;
}
static
{
__$swapInit();
Long localLong1 = (Long)DefaultTypeTransformation.box(0L);
__timeStamp__239_neverHappen1330265162012 = localLong1.longValue();
Long localLong2 = (Long)DefaultTypeTransformation.box(1330265162012L);
__timeStamp = localLong2.longValue();
}
}
初步一看应该是main中调用无参构造函Hello生成Hello对象,然后调用run()方法。其他对象待查看api,源码来慢慢理解消化。
分享到:
相关推荐
创建Controller类,配置视图解析,启动应用,即可访问HelloWorld。 6. **Struts** Struts是最早的Java MVC框架之一,它提供了强大的MVC架构。安装Struts需要JDK和Apache Tomcat服务器,通过Maven或Ivy管理依赖。...
"class HelloWorld { void say() { println 'Hello, World!' } }"); GroovyObject groovyInstance = groovyClass.newInstance(); groovyInstance.invokeMethod("say", null); ``` 在这个例子中,我们动态地定义了...
这个配置将URL `/helloWorld` 映射到 `HelloWorldAction`,并把'success'结果解析为`HelloWorld.jsp`页面。 4. **运行和测试**:完成以上步骤后,你可以通过HTTP请求访问`http://yourserver/yourapp/helloWorld`来...
在正则表达式方面,Groovy支持Java的正则匹配,如`"Hello World!" =~ /Hello/`。还能使用`=~`操作符进行模式匹配,并可以替换匹配到的子串,如`"1.23".replaceAll(/./){ ch->ch.next()} == '2/34'`,这个例子将每个...
比如,Groovy支持直接打印语句`println 'hello world'`,而无需像Java那样定义类和主方法。此外,Groovy也允许使用Closures,这是一种强大的功能,可以用来创建匿名函数或者处理集合数据。 SwingBuilder是Groovy中...
它是一个 ClassLoader 的子类,可以解析 Groovy 源代码并生成对应的 Class 对象。如果你的 Groovy 脚本包含类的定义,使用 GroovyClassLoader 更为合适。 3. JSR-223(Java Scripting API)是 Java 平台的标准,...
例如,“Hello, World!”程序在Groovy中的实现可以简单至一行代码,无需显式调用`System.out.println`。 #### Closures:强大的函数式编程工具 闭包是Groovy的一个关键特性,它们是可重用且可分配的代码块,可以...
### Groovy 快速入门知识点解析 #### 一、集合 **1.1 List** - **定义**: 在 Groovy 中,`List` 是一种非常常用的数据结构,它类似于 Java 的 `List`,能够存储一系列的对象,并且保持它们的顺序。 - **示例代码*...
下面我们将逐步解析如何在Repl.it上使用JavaFX创建"Hello World"程序: 1. **创建项目**:在Repl.it上创建一个新的Java项目,并确保选用的是Java 11或更高版本,因为JavaFX从Java 11开始作为独立模块提供。 2. **...
本教程将深入解析使用Tess4J实现的“Hello World”示例,以帮助初学者理解如何在Java项目中集成Tess4J进行OCR操作。 **一、Tess4J简介** Tess4J是Tesseract OCR的Java绑定库,它允许Java开发者通过简单的API调用来...
例如,将所有`<p>`标签内的文本替换为"Hello, World!": ```java for (Element paragraph : paragraphs) { paragraph.text("Hello, World!"); } ``` 5. **生成新的HTML** 完成内容替换后,可以使用`document....
虽然我们没有图片,但我们可以从文件名"Hello"推测,这可能是应用的初始控制器或服务,或者是一个简单的"Hello, World!"示例。 4. **控制器(Controllers)** 在Grails中,控制器负责处理HTTP请求,调用服务并准备...
例如,假设有一个名为"HelloWorld"的服务方法,参数为一个字符串,可以这样创建请求: ```java SoapObject request = new SoapObject("http://tempuri.org/", "HelloWorld"); request.addProperty("inputString", ...
def text = "Hello, World!" def pattern = /Hello/ def match = text =~ pattern ``` 这里的`match`变量将包含匹配的结果。 3. **`Pattern`和`Matcher`** 如果你想对复杂的正则表达式进行更细粒度的操作,...
这段代码会生成一个包含文本"Hello, World!"的二维码,并保存为PNG图像文件。 2. **读取和解析二维码** 要读取和解析二维码,你可以使用`com.google.zxing.MultiFormatReader`类。以下是一个简单的示例: ```java...
groovyEngine.eval("println 'Hello, Groovy World!'"); ``` 动态代码执行在许多场景下非常有用,比如自动化测试、配置文件的动态解析、热更新以及在运行时根据需求生成代码等。这种能力使得Java应用程序能够适应...