他们两个都不工作。我在“-”之后写了错误
LocalDateTime date = new LocalDateTime.now(); // cannot resolve symbol 'now'
LocalDateTime date = new LocalDateTime(); // LocalDateTime has private access
他们两个都不工作。我在“-”之后写了错误
LocalDateTime date = new LocalDateTime.now(); // cannot resolve symbol 'now'
LocalDateTime date = new LocalDateTime(); // LocalDateTime has private access
now() 是一个静态方法。尝试这个:
LocalDateTime date = LocalDateTime.now();
您的错误消息LocalDateTime has private access
表明编译器已LocalDateTime
成功导入。
首先,验证您使用的是LocalDateTime
我们期望的。看进口。你应该看到:
import java.time.LocalDateTime;
现在阅读这个类的 Javadoc。
new LocalDateTime()
正在尝试调用零参数构造函数。Javadoc 没有列出任何构造函数,因为没有一个不是私有的。
new LocalDateTime.now()
正在尝试调用一个名为 的类的零参数构造函数LocalDateTime.now
。没有具有该名称的类,这就是您收到错误的原因cannot resolve symbol 'now'
你真正想做的是调用类的静态now()
方法LocalDateTime
。为此,您不要使用new
.
LocalDateTime now = LocalDateTime.now();
尝试使用静态工厂方法创建自己的类,并提醒自己如何调用它的方法。
public class MyThing {
private MyThing() { // private constructor
};
public static MyThing thing() {
return new MyThing();
}
}
new MyThing()
如果您尝试在另一个类中使用or来使用它,您会发现您会遇到相同的错误new MyThing.thing()
。MyThing.thing()
将工作。
你的语法是关闭的,假设你使用的是 Java 8+,没有import
它可能看起来像,
java.time.LocalDateTime date = java.time.LocalDateTime.now();
如果你有import java.time.LocalDateTime;
那么你只需要
LocalDateTime date = LocalDateTime.now();
调用static
LocalDateTime#now()
(请注意,提供了多个now()
函数,这使得更容易有效地使用不同的时区)。