查看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只是一个示例模型类,新文档可能需要更新以消除这种混淆。
答案 0 :(得分:0)
在static
类上必须有一个名为show(Client)
的{{1}}方法,它返回一些对象。该对象被传递到views.html.Client
方法,ok(whatever)
方法返回ok
个对象。
答案 1 :(得分:0)
很明显,课程Client
的静态函数为findById
,其中Long
为Client
并返回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);
}