从另一个包调用 class 的方法而不实例化 class
Call method of class from another package without instantiating the class
我是 Java 的新手,不理解以下来自 here
的代码
SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
创建 class SimpleDateFormat
的实例后,它来自 java.text
包,正在使用 java.util
包的 setTomeZone
方法.
谁能帮我理解为什么我们对 SimpleDateFormat
class 的实例使用 setTimeZone
方法而不是 Calendar
class 的实例?
注意:我浏览了几篇文章,它们告诉我如何从另一个 Java class 或 Java 包中调用方法。然而,这对我来说似乎不同。我也注意到 Calendar
是一个抽象的 class 但在这里无法理解。
设置时区
public void setTimeZone(TimeZone zone)
为此 DateFormat 对象的日历设置时区。这个方法等同于下面的调用。
getCalendar().setTimeZone(zone)
通过此方法设置的时区被 setCalendar 调用覆盖。
通过此方法设置的时区可能会因调用解析方法而被覆盖。
参数:
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
一个包包含 classes 和一个 class 包含方法。在 java.text
中,我们有 SimpleDateFormat
class。如果你去它的 public api,你可以看到这个 class 有一个 setTimeZone
方法(它继承自 java.text.DateFormat
class)。所以这个方法确实属于SimpleDateFormat
class的API。因此,说 setTimeZone
方法 属于 到 java.util
包是错误的。后者可能包含一些 class 具有同名方法,但这些方法不相关。
After creating and instance of Class SimpleDateFormat which is from java.text package, setTomeZone method of Java.util package is being used.
在这种特殊情况下,类 都被声明为 public
,因此即使在不同的包中,它们都是可见的。包在这里无关紧要。 SimpleDateFormat.setTimeZone()
采用 java.util.TimeZone
作为参数一点也不意外。包只是文件夹,有时需要访问另一个文件夹中的内容。就这些了。
Can any one please help me understand why we used setTimeZone method with instance of SimpleDateFormat class and NOT with instance of Calendar class?
因为代码的目的是解析日期字符串。 Calendar
不提供此类功能。 SimpleDateFormat
需要将其时区设置为 UTC,以便无论用户的本地时区如何,都可以将日期字符串解析为同一时刻。
我是 Java 的新手,不理解以下来自 here
的代码SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
创建 class SimpleDateFormat
的实例后,它来自 java.text
包,正在使用 java.util
包的 setTomeZone
方法.
谁能帮我理解为什么我们对 SimpleDateFormat
class 的实例使用 setTimeZone
方法而不是 Calendar
class 的实例?
注意:我浏览了几篇文章,它们告诉我如何从另一个 Java class 或 Java 包中调用方法。然而,这对我来说似乎不同。我也注意到 Calendar
是一个抽象的 class 但在这里无法理解。
设置时区
public void setTimeZone(TimeZone zone)
为此 DateFormat 对象的日历设置时区。这个方法等同于下面的调用。
getCalendar().setTimeZone(zone)
通过此方法设置的时区被 setCalendar 调用覆盖。
通过此方法设置的时区可能会因调用解析方法而被覆盖。
参数: 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
一个包包含 classes 和一个 class 包含方法。在 java.text
中,我们有 SimpleDateFormat
class。如果你去它的 public api,你可以看到这个 class 有一个 setTimeZone
方法(它继承自 java.text.DateFormat
class)。所以这个方法确实属于SimpleDateFormat
class的API。因此,说 setTimeZone
方法 属于 到 java.util
包是错误的。后者可能包含一些 class 具有同名方法,但这些方法不相关。
After creating and instance of Class SimpleDateFormat which is from java.text package, setTomeZone method of Java.util package is being used.
在这种特殊情况下,类 都被声明为 public
,因此即使在不同的包中,它们都是可见的。包在这里无关紧要。 SimpleDateFormat.setTimeZone()
采用 java.util.TimeZone
作为参数一点也不意外。包只是文件夹,有时需要访问另一个文件夹中的内容。就这些了。
Can any one please help me understand why we used setTimeZone method with instance of SimpleDateFormat class and NOT with instance of Calendar class?
因为代码的目的是解析日期字符串。 Calendar
不提供此类功能。 SimpleDateFormat
需要将其时区设置为 UTC,以便无论用户的本地时区如何,都可以将日期字符串解析为同一时刻。