基础知识
如果你有一些Java基础的话,使用Groovy会非常容易
变量定义
var
/def
定义变量(自动推断类型)
var test = 114
def test2 = "Hello"
final
定义常量(自动推断类型)
final test = 114
//test = 114514 -> 不可修改
<Type>
定义指定类型变量(类似Java)
String str = "Hello Groovy"
函数定义
其实函数也是一种变量
使用关键字def
定义函数:
def test() {
// 你的代码
}
指定返回值类型定义函数(类似Java):
String calc(String input){
// 你的代码
}
static void doSomething(){//static关键字表示这是静态方法
// 你的代码
}
闭包定义:
def sum={
a,b -> return a+b
}
方法引用:
def str = "Hello, World!"
def toUpperCaseMethod = str.&toUpperCase
println(toUpperCaseMethod()) //输出:HELLO, WORLD!
全局变量
使用@Field
注解修改变量的作用域
import groovy.transform.Field
@Field static String value = "abc"
@Field static def value2 = "test"
static void enable(){
Bukkit.getLogger().info(value)
Bukkit.getLogger().info(value2)
}
也可以类似于Java,通过在外面套一层class来间接实现:
class TestClass{
static def value = "abc"
def value2 = "test"
}
static void enable(){
Bukkit.getLogger().info(TestClass.value) //static变量可直接通过类访问
def clazz = new TestClass()
Bukkit.getLogger().info(clazz.value2) //成员变量需要通过对象访问
}
重载后,后台显示:
[00:38:23 INFO]: abc
[00:38:23 INFO]: test
简单来说,只要你不重载插件或关服,这个变量就一直存在,你可以随便在哪里调用它。
新建对象
def map = new HashMap() //使用def定义
HashMap map2 = new HashMap() //不指定HashMap内数据类型
HashMap<String, String> map2 = new HashMap() //指定HashMap内数据类型,同Java
循环
for循环(同Java):
for(int i=0;i<10;i++){
// 你的代码
}
增强for循环:
def numbers = [1, 2, 3, 4, 5]
for (num in numbers) {
println(num)
}
for (int num : numbers) {//同Java
println(num)
}
forEach循环:
def numbers = [1, 2, 3, 4, 5]
numbers.each { num ->
println(num)
}
numbers.forEach(num -> println(num)) //同Java