为什么在Java中的类实例中返回一个类实例?
我来自JavaScript和Node.js背景,尽管我拥有大部分的OOP基础知识,但还是有许多我不太了解的Java基础知识。例如,我正在做a Spring tutorial,并立即遇到了一些令我困惑的语法。为什么在Java中的类实例中返回一个类实例?
第一次演练是一个hello world应用程序。首先,我们建立了一个问候类:
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;
}
}
首先,我不明白为什么他们定义的类本身内部的类的实例开始。为什么不为公共课添加参数?无论如何,那不是我的问题。当我得到更多的损失是,当我们做一个问候控制器:
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
创建问候语类的新实例,但它只有一个参数时,构造函数有两个,long id
和String content
。接下来,他们返回该类的另一个实例,这次使用与构造函数结构相匹配的参数。
这是为什么?
首先,我建议你学习Java编程语言,没有使用Spring:
随着
public class Greeting {
您正在定义名为Greeting的类。这是你的班级。
这个类里面你有:
public Greeting(long id, String content) {
这是类的构造函数。在Java中,没有对象没有调用它们的构造函数。所以为了创建一个新的对象,你必须调用它的构造函数。
然后,你必须
public class GreetingController {
这个定义的另一个类,在这种情况下GreetingController。
此类具有的方法(功能):
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name)
这个方法接收一个称为name
字符串并返回问候的一个对象(实例)。为了回报问候,你必须首先创建实例的实例,这是由调用它的构造:
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
此行是调用构造函数和传递两个参数,您在问候限定的相同类'构造函数。
公共问候问候(@RequestParam(值= “姓名”,默认值= “世界”)字符串名称)只定义了一个方法与返回类型问候问候
new Greeting(counter.incrementAndGet(),
String.format(template, name))
上面代码实际上创建了一个新的Greeting实例并将其返回。
我不知道我是否理解你的问题,但我试着给你一个答案。
通常情况下,您使用控制器(在你情况下是GreetengsController)向世界公开资源。该资源是一个Greeting对象/实例。你用两个参数初始化对象(在你的情况下是一个long和一个String)。
的
public Greeting greeting(... String name)
是这样的方法(功能)声明,说:此fuctionn期望字符串“名称”作为参数,并返回一个对象问候给客户端(呼叫者),并用
return new Greeting(....)
您返回Greeting对象。通常情况下,你用对象多做一点点(不仅返回一个新实例)
我不知道我是否回答你是问题。如果不。请告诉我。
_define类中的类的一个实例本身_你在哪里看到这个?另外,如果这不是您的问题或与此相关,请将其删除。 –
_'''Public Greeting greeting'创建Greeting类的新实例_否,它不。这只是一个返回类型为“Greeting”的方法。 –
“但它只有一个参数,当构造函数有两个” - 不是另一个参数“String.format(...)”? (看起来像逗号被用来代替该行上的点) – BretC