-3

他们两个都不工作。我在“-”之后写了错误

LocalDateTime date = new LocalDateTime.now(); // cannot resolve symbol 'now' 
LocalDateTime date = new LocalDateTime(); // LocalDateTime has private access
4

3 回答 3

1

now() 是一个静态方法。尝试这个:

LocalDateTime date = LocalDateTime.now();
于 2018-02-05T15:22:40.163 回答
1

您的错误消息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()将工作。

于 2018-02-05T16:42:40.287 回答
0

你的语法是关闭的,假设你使用的是 Java 8+,没有import它可能看起来像,

java.time.LocalDateTime date = java.time.LocalDateTime.now(); 

如果你有import java.time.LocalDateTime;那么你只需要

LocalDateTime date = LocalDateTime.now();

调用static LocalDateTime#now()(请注意,提供了多个now()函数,这使得更容易有效地使用不同的时区)。

于 2018-02-05T15:21:39.893 回答