为了账号安全,请及时绑定邮箱和手机立即绑定

“导入”之后的“静态”修饰语是什么意思?

/ 猿问

“导入”之后的“静态”修饰语是什么意思?

墨色风雨 2019-07-22 10:43:07

“导入”之后的“静态”修饰语是什么意思?

像这样使用时:

import static com.showboy.Myclass;public class Anotherclass{}

有什么区别import static com.showboy.Myclassimport com.showboy.Myclass?


查看完整描述

3 回答

?
繁星淼淼

看见文献资料

静态导入声明类似于正常的导入声明。如果正常导入声明从包导入类,允许在没有包限定的情况下使用这些类,则静态导入声明从类中导入静态成员,允许在没有类限定的情况下使用它们。

那么什么时候应该使用静态导入呢?非常谨慎!只有当您不想声明常量的本地副本或滥用继承(常量接口反模式)时才使用它。换句话说,当您需要经常访问一个或两个类的静态成员时,请使用它。如果您过度使用静态导入功能,它可能会使您的程序不可读和不可维护,从而使用您导入的所有静态成员污染它的命名空间。您的代码的读者(包括您,在您编写代码几个月后)将不知道静态成员来自哪个类。从类中导入所有静态成员对可读性特别有害;如果只需要一个或两个成员,则单独导入它们。如果使用得当,静态导入可以通过删除类名重复的样板来提高程序的可读性。


查看完整回答
反对 回复 2019-07-22
?
慕莱坞森

您所述的这两种进口产品之间没有差别。但是,您可以使用静态导入来允许对其他类的静态成员进行不限定的访问。在我以前不得不这样做的地方:

import org.apache.commons.lang.StringUtils;
      .
      .
      .if (StringUtils.isBlank(aString)) {
      .
      .
      .

我能做到:

import static org.apache.commons.lang.StringUtils.isBlank;
      .
      .
      .if (isBlank(aString)) {
      .
      .
      .

您可以在文献资料.


查看完整回答
反对 回复 2019-07-22
?
狐的传说

静态导入用于导入类的静态字段/方法,而不是:

package test;import org.example.Foo;class A {

 B b = Foo.B_INSTANCE;}

你可以写:

package test;import static org.example.Foo.B_INSTANCE;class A {

 B b = B_INSTANCE;}

如果经常在代码中使用来自另一个类的常量,并且静态导入不是模棱两可的话,这是非常有用的。

顺便说一句,在您的示例“导入静态org.example.myclass;”中,导入用于类,导入静态为类的静态成员。


查看完整回答
反对 回复 2019-07-22

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信