コードの3 Groovyの話

前の言葉は、この1つはGroovyとJavaは異なるユニークな特性で説明するために、コードを使用する、GroovyとJavaのの異なるユニークな機能を導入しました。あなたは次のように動作するように準備ができて、コードを書く前にいくつかの準備作業を行う必要があります。

1、仕事する準備ができて

  • 作成GradleのJavaプロジェクト
    のIntelliJ IDEA - >ファイル- >新規 - >プロジェクト- >のGradle - > Javaの- >次- > GrounpId、成果物を書く、バージョン- >ローカル環境のGradleを選択してください- >プロジェクトの名前を書く- > [完了]を
    作成したプロジェクト
  • Groovyのコンソールを開き、[ツール] - > [Groovyのコンソール - >直接書き込みGroovyのコード

これらの製剤を使用すると、Groovyのコードを書くことができるので、それがGroovyとJavaの違いを見に取りました。

2、GroovyとJavaの違い

これは、GroovyとJavaので違いを説明するために、次の定義のJavaBeanを通過します。

2.1 Javaの定義されたJavaBean

class Student {
    private String name;
    private String email;
    private Integer age;
    // 构造器
    // getter setter...
}

2.2 Groovyの定義されたJavaBean

class Student {
    private String name
    private String email
    Integer age      // 没权限修饰符会自动生成 getter setter
    private String getName() {
        name        // 可以省略return
    }
    private void setName(String name) {
        this.name = name
    }
    //可省略 getter setter 省略了 email 的 getter setter 
}

2.3 Groovyの操作のJavaBean

Groovyのクラスが行うことができ、スクリプトを行うことができますので、私たちはJavaBeanクラスの真後ろに文を書くことができます。次のように:

// class Student {...}
// 外部可直接调用类的私有成员
Student stu = new Student()
stu.setName("小明")
println '私有getter方法:' + stu.getName()

// 使用点的方式操作字段
stu.email = 'xiao@'
println '点方式调用:' + stu.email

// 调用自动生成的 getter setter 方法
stu.setAge(19)
println '调用自动生成getter,setter:' + stu.getAge()

//  自动生成具名构造器
Student stu = new Student(name:'willie', age:18)
//Student stu = [name:'willie', age:18]          // 直接写参数和值赋给对象,会自动设置字段值
println stu.name + ':' + stu.age + ':' + stu.email

// null 调用方法不报空指针异常
stu.name = null
println stu.name.equals('ssss')

Javaの2.4とは異なり、グルーヴィーまとめたもの

  • JavaBeanの定義
  1. セミコロンを省略することができます
  2. ゲッター/セッターを省略することができます
  3. 戻り値を省略することができます
  4. いいえ許可修飾子は自動的にゲッター/セッターを生成しません
  • 直接定義オブジェクトのクラスと外部磁場を呼び出します
  1. 呼び出し可能なプライベートメンバ
  2. ポイントシステムコールフィールドを使用します
  3. いいえ権限の変更は自動的にゲッターセッターを生成しません
  4. コンストラクタ内蔵命名
  • ヌルの使用は、nullポインタ例外をスローしません。

これらの者は、Groovyの次の固有の構文を見てみましょう、GroovyとJavaの比較です。

3、Groovyの独特の文法

独特の文法のGroovyの多くは、以下の我々は彼の用語オフより特別な構文のいくつかをピックアップします。

3.1基本的な構文

  • 変数の型定義
    の代わりに、すべてのタイプのDEFとの具体的な弱い型付けされた声明でグルーヴィー、変数の型を記述しないでください。明確な、DEF持参することをお勧めします。
  • メソッドをアサート
    アサートメソッドが行うアサーションを使用して
  • この方法では、括弧を省略することができ
    、メソッド呼び出しの括弧を省略することができる方法は、パラメータを持たなければならない、または財産とみなされるものとします。
// 变量声明
def name = 'willie'
age = 18
// 带参数方法调用可省略括号
println name + ':' + age
// assert 断言
assert age == 19

3.2文字列の定義

3つの方法の文字列の定義:

  1. 単一引用符(「」):通常の文字列が定義され
  2. 二重引用符(「」):コンテンツが参照変数値$ {に使用してもよいです}
  3. 3つの単一引用符(「」「」「」は):文字列を折り返すことができますフォーマット文字列に導入することができます
// 字符串使用 '|"|'''
def str1 = 'willie'                // 普通字符串定义
def str2 = "wolfcode:${str1}"      // 字符串内容中可引用变量
def str3 = '''wolfcode:
    willie'''                      // 可格式化定义字符串

println str1                // willie
println str2                // wolfcode:willie
println str3                // wolfcode:
                            //     willie

3.3のセットを定義して使用します

すべての操作と互換性のあるJava構文、我々は独自の構文を見ていきます以下。

一覧固有の構文

  • 免責事項:使用は[]定義のセット
def list = [ele1, ele2, ele3]
  • 追加:使用すると、<<要素を追加します
list << ele4
  • タイプ:java.util.ArrayListの

地図固有の構文

  • 免責事項:使用すると、[]キー:定義の値
def map = [key1:value1,key2:value2]
  • 追加:割り当てモードを使用します.KEY
map.key3 = value3
  • タイプ:java.util.LinkedHashMap
// list 集合,使用[] 定义集合
def list = ['willie','will','stef']
list << 'AA'                // List 元素特有添加方式
list.add('BB')
println list                // [willie, will, stef, AA, BB]
println list.getClass()     // 使用的是 java.util.ArrayList
println "=========== Map 映射 =============="
def map = [name:'willie', age:18]
map.wechat = 'cunge_weixin' // Map 元素特有添加方式
map.put('aa', 'AA')
println map                 // [name:willie, age:18, wechat:cunge_weixin, aa:AA]
println map.getClass()      // 使用的是 java.util.LinkedHashMap

4、閉鎖

4.1はじめに閉鎖

クロージャはGroovyのクロージャの鍵知識が封入{}ブロックを理解することが簡単です。同様の方法では、パラメータを持つとパラメータなし。メソッドに渡されるパラメータの変数値は、閉鎖プロセスを呼び出すようにクロージャを割り当てることができます。

閉鎖4.2定義フォーマット

{
    [param1,param2... ->]
    执行体
}

4.3閉鎖コール

変数は別のコールを受信するために必要な

def closure = {[param1,param2... ->] 执行体}
closure([param]) 或 closure.call([param])

4.4コード・ショー

参照閉鎖プロセスパラメータなし(GradleのGroovyのクロージャを使用する実施形態で)として定義され、パラメータ化

// 不带参闭包
def c1 = {
    println 'hello'
}
// 带参闭包
def c2 = {
   val ->       // 指定闭包形参名
   println "hello ${val}"
}
// 定义指定参数类型方法接收无参闭包
def method1(Closure closure){
    //closure()
    closure.call()
}
// 定义无指定参数类型方法接收带参闭包
def method2(clo){
    //clo('willie')
    clo.call('willie')
}
method1(c1)
method2(c2)

GradleのGroovyのクロージャ主に道を開くのGradleのGroovyに限り言う、で決定的な役割を果たし、それぞれのGradleプロジェクトのbuild.gradleファイルが存在し、このファイルには、Groovyの言語定義されたプロジェクトのビルドスクリプトを使用することです。この文書は非常に重要です。

すぐにプロジェクトをビルドするには次<<使用のGradle >>

転載リンク:https://www.jianshu.com/p/f6d3521c940c

おすすめ

転載: blog.csdn.net/weixin_33712987/article/details/91014749