gpt4 book ai didi

grails - 在Grails中何时何地使用对象实例和类名?

转载 作者:行者123 更新时间:2023-12-02 14:27:27 25 4
gpt4 key购买 nike

通过查看代码(实际上是测试代码),我感到困惑:

def user = new User(userId:'anto',password:'xxxx')
user.addToPosts(new Post(content:"First"))
def foundUser = User.get(user.id)

在上面的代码中,我为 User类创建了一个对象,并将其命名为 user。如果我替换行:
def foundUser = User.get(user.id)

像这样
def foundUser = user.get(user.id)

即我已经从类名称 User更改为 user对象名称。而且,当我运行测试时,它不会抛出任何错误。

但是当我将这一行更改为:
user.addToPosts(new Post(content:"First"))

像这样
User.addToPosts(new Post(content:"First"))

我出错了!那么幕后发生了什么?在哪些情况下我必须使用对象名称,在哪些情况下要使用类名称?为什么呢?

提前致谢。

最佳答案

get()User类的静态方法,因为它与单个实例无关-它返回一个实例。因此,通常在类上调用它,但也可以在实例上调用静态方法。如果您使用Java进行此操作,您的IDE会警告您它可以工作,但是不应该这样做,但是我怀疑任何IDE都可以为Groovy做到这一点(尚未)。
addToPosts()是一个实例方法,因为必须在实例上调用它才能将Post添加到用户实例的posts集合中。您不能在类上调用它,因为那没有意义-该类没有posts集合要添加。

关于grails - 在Grails中何时何地使用对象实例和类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7215013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com