繁体   English   中英

从另一个包中调用类的方法而不实例化该类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM