什么`Client.findById(id)`是什么意思?

时间:2013-04-01 20:57:46

标签: java playframework playframework-2.0

查看Java的Play文档,我注意到以下代码块:

public static Result show(Long id) {
  Client client = Client.findById(id);
  return ok(views.html.Client.show(client));
}

来源:http://www.playframework.com/documentation/2.1.0/JavaRouting

我在理解第二行时遇到一些麻烦,我对Java对象创建的理解是典型的构造函数,如下所示:

Person john = new Person();

第二行在做什么?从Class创建一个名为client的对象Client,也就是Client?它似乎不是Play Framework的一部分,当然我在JavaDocs中找不到任何东西。

由于

修改:

我发现这是答案(http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

的一个很好的参考点

另外我认为类Client来自以下文档(http://www.playframework.com/documentation/1.1.1/controllers),Client只是一个示例模型类,新文档可能需要更新以消除这种混淆。

3 个答案:

答案 0 :(得分:0)

static类上必须有一个名为show(Client)的{​​{1}}方法,它返回一些对象。该对象被传递到views.html.Client方法,ok(whatever)方法返回ok个对象。

答案 1 :(得分:0)

很明显,课程Client的静态函数为findById,其中LongClient并返回findById。静态函数是在没有对对象属性的任何访问的情况下定义的函数,因此可以通过类名访问,而不必通过对象访问。最有可能的是,该类具有静态属性,该属性包含索引系统中所有客户端的集合,Client从该列表中获取现有Client

然而,我真的不知道定义了类{{1}}的位置。我也快速浏览了一下,在明显的地方找不到它。

答案 2 :(得分:0)

你缺少一些基本的知识/经验。您提供的示例与routes无关,在此代码段中,只有第一行很重要,其次只是一些假设的用法。事实上它可能只是......

public static Result show(Long id) {
  return ok("You want to display details of client with ID: " + id);
} 

尽管@BenBarden正确地解释了这是什么意思,但这个静态方法不是在任何地方声明,它(再次)是对某些ORM的假设使用。举个例子,Ebean模型的真实用法是:

Client = Client.find.byId(id);

当然,您也可以在Client模型中声明自己的方法,并将其命名为与示例中的相同,但它只是包装器:

public static Finder<Long, Client> find
        = new Finder<>(Long.class, Client.class);

public Client findById(Long id) {
    return find.byId(id);
}

结论

  • 您需要检查Play源提供的一些示例,以熟悉一些基本语法,幸运的是,您会发现它很容易。
  • 来自Play 1.x的
  • 不要混合文档与Play 2.x它们兼容!