【发布时间】:2015-11-04 17:28:24
【问题描述】:
我来自 JavaScript 和 Node.js 背景,虽然我掌握了大部分 OOP 基础知识,但仍有许多 Java 基础知识我不太了解。例如,我正在做 a Spring tutorial 并立即遇到一些令我困惑的语法。
第一个演练是一个 hello world 应用程序。首先,我们设置一个 Greeting 类:
public class Greeting {
private final long id;
private final String content;
public Greeting(long id, String content) {
this.id = id;
this.content = content;
}
public long getId() {
return id;
}
public String getContent() {
return content;
}
}
首先,我不明白他们为什么在类本身中定义类的实例。为什么不直接向公共类添加参数?无论如何,这不是我的问题。我更迷失的是当我们制作一个 Greeting 控制器时:
package hello;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
// This ensures that HTTP requests to /greeting are mapped to the greeting() method.
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
}
}
在这个文件中,我知道public Greeting greeting 创建了一个新的 Greeting 类实例,但是当构造函数有两个参数时,它只有一个参数,long id 和 String content。接下来,它们返回该类的另一个实例,这一次带有与构造函数结构匹配的参数。
这是为什么?
【问题讨论】:
-
在类本身中定义一个类的实例 你在哪里看到的?此外,如果这不是您的问题或与之无关,请将其删除。
-
public Greeting greeting创建 Greeting 类的新实例 不,它没有。这只是一个返回类型为Greeting的方法。 -
"但是当构造函数有两个参数时它只有一个参数" - 另一个参数不是 "String.format(...)" 吗? (看起来那条线上也使用了逗号而不是点?)
-
“向公共类添加参数”是什么意思?一个类没有参数……方法或构造函数调用有。如果您真的是 Java 新手,我强烈建议您放弃 Spring 方面的内容,首先学习该语言的基础知识。
-
在进入像 Spring MVC 这样的高级框架之前,你应该真正学习 Java。