1つ、抽象的な
package study.object.extend
abstract class AbstractPerson {
protected String name
protected int age
abstract void play()
}
package study.object.extend
class Man extends AbstractPerson {
@Override
void play() {
println "我是继承类,$name,哈哈哈哇$age"
}
public static void main(String[] args) {
Man man = new Man()
man.name = "Groovy"
man.age = 30
man.play()
}
}
二、インターフェース
package study.object.inter
interface Action {
void play()
default void eat(String name) {
println "default 修饰类$name"
}
}
package study.object.inter
class ActionImpl implements Action {
@Override
void play() {
println "我是未实现方法"
}
public static void main(String[] args) {
ActionImpl actionImpl = new ActionImpl()
actionImpl.eat("大米")
actionImpl.play()
}
}
3、特性
package study.object.trait
trait Flags {
String name
void play() {
println "trait Flags play $name"
}
void useThis() {
println "this关键字如下,${this.class.name}"
}
}
package study.object.trait
trait Flys {
String name
void fly() {
println "$name 可以fly"
}
}
package study.object.trait
class FlagsImpl implements Flags, Flys {
public static void main(String[] args) {
FlagsImpl flagsImpl = new FlagsImpl()
flagsImpl.name = "Groovy"
flagsImpl.play()
flagsImpl.fly()
flagsImpl.useThis()
}
}
4、jsonおよびxmlの解析
package study.json_xml
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
class GroovyJsonGrammar {
public static void main(String[] args) {
outputJson()
}
private static void outputJson() {
def list = [new Children(name: "xm", age: 18), new Children(name: "xh", age: 25)]
def json = JsonOutput.toJson(list)
println json
println json.class
println JsonOutput.prettyPrint(json)
}
private static void parseJson() {
def jsonSlurper = new JsonSlurper()
def jsonData = jsonSlurper.parseText('{ "name": "Tony", "ID" : "12345"}')
println "${jsonData.name}====${jsonData.ID}"
def object2 = jsonSlurper.parse('[{"name":"Tony","age":"123"},{"name":"Jack","age":"456"}]'.getBytes())
println object2
println object2[0]
println object2[1].name
}
}
package study.json_xml
import groovy.util.slurpersupport.GPathResult
import groovy.xml.MarkupBuilder
import groovy.xml.XmlUtil
class GroovyXmlGrammar {
static void main(String[] args) {
parseXml()
}
private static void parseXml() {
String xml = '''
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.jvm_demo_20200601">
<test>12345</test>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity2">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
'''
def xmlSlurper = new XmlSlurper()
def result = xmlSlurper.parseText(xml)
println result.@package
println result.test.text()
result.declareNamespace('android': 'http://schemas.android.com/apk/res/android')
println result.application.@'android:allowBackup'
println result.application.activity[0].@'android:name'
println result.application.activity[1].@'android:name'
result.application.activity.each {
println it.@'android:name'
}
}
private static void productXml() {
def mB = new MarkupBuilder()
mB.collection(shelf: 'New Arrivals') {
movie(title: 'Enemy Behind')
type('War, Thriller')
format('DVD')
year('2003')
rating('PG')
stars(10)
description('Talk about a US-Japan war')
}
}
}
5、ファイル操作
package study
import groovy.io.FileType
class GroovyFileGrammar {
public static void main(String[] args) {
listEachFile("G:/MustSpace/001_GradleSpace/GroovyStudy")
}
private static void readFile() {
new File("./GroovyStudy.iml").eachLine {
println(it)
}
}
private static void readFile01() {
new File("./GroovyStudy.iml").eachLine {
line -> println("line:${line}")
}
}
private static String readFile02() {
return new File("./GroovyStudy.iml").text
}
private static void readFileByte(String path) {
println "文件位置为$path,文件大小是${new File(path).length()} bytes"
}
private static void writeFile() {
new File("./a.txt").withWriter("utf-8") {
it.writeLine "哇哈哈,哈哈哇"
}
}
private static void writeFile01() {
new File("./a.txt").withWriter("utf-8") {
writer -> writer.writeLine '写文件1,写文件1,写文件1'
}
}
private static void testCurrentPathIsFile(String path) {
println "当前路径是否是文件,${new File(path).isFile()}"
println "当前路径是否是文件,${new File(path).isDirectory()}"
}
private static void createFileDirectory(String path) {
def file = new File(path);
def mkdir = file.mkdir()
println "文件创建成功${mkdir}"
}
private static void deleteFile(String path) {
def delete = new File(path).delete()
println "文件是否删除成功${delete}"
}
private static copyFile() {
def src = new File("./a.txt")
def dest = new File("./b.txt")
dest << src.text
}
private static listFile(String path) {
new File(path).listFiles().each {
println "当前文件夹路劲,${it.absolutePath}"
}
}
private static listEachFile(String path) {
new File(path).eachFileRecurse(FileType.DIRECTORIES) {
println it.absolutePath
}
}
}