Объявление метода без static
помечает метод как метод экземпляра. Принимая во внимание, что объявление с static
сделает этот метод статическим - его можно вызывать без создания экземпляра этого класса - см. https://www.geeksforgeeks.org/static-methods-vs-instance-methods-java/
def
в groovy определяет значение как тип с уткой. Возможности значения не определяются его типом, они проверяются во время выполнения. На вопрос, можно ли вызвать метод для этого значения, дан ответ во время выполнения - см. необязательный ввод .
static def
. Это означает, что метод вернет значение, введенное уткой, и может быть вызван безимеющий экземпляр класса.
Пример:
Предположим, у вас есть эти два класса:
class StaticMethodClass {
static def test(def aValue) {
if (aValue) {
return 1
}
return "0"
}
}
class InstanceMethodClass {
def test(def aValue) {
if (aValue) {
return 1
}
return "0"
}
}
Вам разрешено вызывать StaticMethodClass.test("1")
, но вы должны создатьэкземпляр InstanceMethodClass
, прежде чем вы сможете позвонить test
- как new InstanceMethodClass().test(true)
.