[英]Call method of class from another package without instantiating the class
我是Java的新手,并且从这里不了解下面的一段代码
SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
在创建来自java.text
包的类SimpleDateFormat
和实例之后,正在使用java.util
包的setTomeZone
方法。
任何人都可以帮助我理解为什么我们将setTimeZone
方法与SimpleDateFormat
类的实例一起使用setTimeZone
使用Calendar
类的实例?
注意:我经历了几篇文章,告诉我如何从另一个Java类或Java包调用一个方法。 然而,这似乎与我不同。 我还注意到Calendar
是一个抽象类,但在这里无法理解。
setTimeZone
public void setTimeZone(TimeZone zone)
设置此DateFormat对象的日历的时区。 此方法等效于以下调用。
getCalendar().setTimeZone(zone)
由此方法设置的TimeZone将被setCalendar调用覆盖。
由于调用解析方法,可能会覆盖此方法设置的TimeZone。
参数:zone - 给定的新时区。
https://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html
https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
包中包含类,类包含方法。 在java.text
我们有SimpleDateFormat
类。 如果你去它的公共api ,你会发现这个类有一个setTimeZone
方法(它继承自java.text.DateFormat
类)。 所以这个方法确实属于SimpleDateFormat
类的API。 因此,说setTimeZone
方法属于 java.util
包是错误的。 后者可能包含一些具有相同名称的方法的类,但这些方法不相关。
在创建来自java.text包的Class SimpleDateFormat和实例之后,正在使用Java.util包的setTomeZone方法。
在这种特殊情况下,类都被声明为public
,因此即使在不同的包中它们也都可见。 这个包没关系。 SimpleDateFormat.setTimeZone()
接受java.util.TimeZone
因为参数根本不是意外的。 包只是文件夹,有时需要从另一个文件夹访问某些内容。 就这样。
任何人都可以帮助我理解为什么我们将setTimeZone方法与SimpleDateFormat类的实例一起使用而不使用Calendar类的实例?
因为代码的目的是解析日期字符串。 Calendar
不提供此类功能。 SimpleDateFormat
需要将其时区设置为UTC,以便无论用户的本地时区如何,都可以将日期字符串解析为同一时刻。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.