解析日期并运行到';对非静态方法的静态引用';java中的错误
我的主要观点是:解析日期并运行到';对非静态方法的静态引用';java中的错误,java,date-format,non-static,Java,Date Format,Non Static,我的主要观点是: Date gameDate = DateFormat.parse(scanner.nextLine()); 基本上我想用util.Scanner扫描一个日期 这会导致错误: 无法从DateFormat类型对非静态方法parse(String)进行静态引用 现在,我已经注意到了这个错误,但它似乎没有这样明确 我该如何解决这一问题?如以下章节所述: DateFormat是一个需要具体实例化的抽象类 e、 g 查看如何使用它。您可以尝试以下代码: String format = "
Date gameDate = DateFormat.parse(scanner.nextLine());
基本上我想用util.Scanner扫描一个日期
这会导致错误:
无法从DateFormat类型对非静态方法parse(String)进行静态引用
现在,我已经注意到了这个错误,但它似乎没有这样明确
我该如何解决这一问题?如以下章节所述:
DateFormat
是一个需要具体实例化的抽象类
e、 g
查看如何使用它。您可以尝试以下代码:
String format = "yyyy-MM-dd"; // put proper format here
Date gameDate = new SimpleDateFormat(format).parse(scanner.nextLine());
parse()
不是静态方法。这是一个实例方法。您需要创建一个DateFormat实例,然后在此实例上调用parse()
:
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date gameDate = dateFormat.parse(scanner.nextLine());
静态方法属于类。调用Person.getName()
没有意义。但打电话是有道理的
Person pureferret = new Person("Pureferret");
String name = pureferret.getName();
类DateFormat的方法分析不是静态的。必须先实例化DateFormat对象,然后才能调用其解析方法 您还必须配置日期格式的“规则”,以便解析器知道要解析什么以及如何解析 请参见SimpleDataFormat类:
您必须创建DateFormat的实例才能调用“parse”。 只有静态方法可以调用,而不需要指定类的实例。 您可以使用默认的DateFormat调用获取实例:
DateFormat.getInstance()
然后你可以打电话
DateFormat.getInstance().parse()
或者,您可以使用DateFormat的子类(例如SimpleDataFormat)定义自己的DateFormat
DateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
myFormat.parse(myString);
在此处查看如何自定义它:
DateFormat.getDateInstance().parse(scanner.nextLine())
。但很有可能你需要指定格式。现在我们可以坐下来观看卡玛秃鹫突袭。@MarkoTopolnik为什么我需要getDateInstance?好吧,你需要一些DateFormat
或其子类的实例。我给了你一个例子,让你用最少的代码实例。让它适应你的需要。例如,您将使用SimpleDataFormat
获得所需的一切。看看Javadoc。@MarkoTopolnik,啊,我想我的错误是认为DateFormat
中的格式是动词,而不是名词;我以为这是某种方法,而不是类。@Marko抽象(不可实例化)类仍然可以有静态(类级)方法
DateFormat.getInstance().parse()
DateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
myFormat.parse(myString);