Java 什么是;“静态”;“后面的修饰语”;进口;什么意思?

Java 什么是;“静态”;“后面的修饰语”;进口;什么意思?,java,modifier,static-import,Java,Modifier,Static Import,这样使用时: import static com.showboy.Myclass; public class Anotherclass{} 导入静态com.showboy.Myclass和导入com.showboy.Myclass之间有什么区别 静态导入声明是 与正常进口类似 宣言。正常进口在哪里 声明从中导入类 软件包,允许使用它们 如果没有包装鉴定,则 静态进口申报进口 来自类的静态成员,允许 它们可以在没有课的情况下使用 资格 那么什么时候应该使用静态导入呢? 非常节俭!只在你需要的时

这样使用时:

import static com.showboy.Myclass;

public class Anotherclass{}
导入静态com.showboy.Myclass和导入com.showboy.Myclass之间有什么区别

静态导入声明是 与正常进口类似 宣言。正常进口在哪里 声明从中导入类 软件包,允许使用它们 如果没有包装鉴定,则 静态进口申报进口 来自类的静态成员,允许 它们可以在没有课的情况下使用 资格

那么什么时候应该使用静态导入呢? 非常节俭!只在你需要的时候使用它 否则,您可能会倾向于声明本地 常数的副本,或被滥用 继承(常量接口) 反模式)。换句话说,使用它 当您需要频繁访问 来自一个或两个的静态成员 上课。如果你过度使用静电传感器 导入功能,它可以使您的 程序不可读且不可维护, 使用所有 您导入的静态成员。读者 你的代码(包括你,几个月 你写完之后)就不知道了 静态成员来自哪个类 从…起导入所有静态 类中的成员可以是 尤其对可读性有害; 如果你只需要一两个成员, 单独导入它们。使用 适当地,静态导入可以使 您的程序更可读,通过 消除重复的样板 类名称的集合


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

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;

}
如果您经常在代码中使用来自另一个类的常量,并且静态导入没有歧义,那么它非常有用


顺便说一句,在您的示例“import static org.example.Myclass;”中,将不起作用:import用于类,import static用于类的静态成员。

您声明的这两个导入之间没有区别。但是,您可以使用静态导入来允许对其他类的静态成员进行非限定访问。我以前必须这样做:

import org.apache.commons.lang.StringUtils;
      .
      .
      .
if (StringUtils.isBlank(aString)) {
      .
      .
      .
我可以这样做:

import static org.apache.commons.lang.StringUtils.isBlank;
      .
      .
      .
if (isBlank(aString)) {
      .
      .
      .
你可以在地图上看到更多

“导入静态com.showboy.Myclass”和“导入com.showboy.Myclass”之间的区别是什么

第一个应该生成编译器错误,因为静态导入仅适用于导入字段或成员类型。(假设MyClass不是内部类或showboy的成员)

我想你是说

import static com.showboy.MyClass.*;

这使得MyClass中的所有静态字段和成员在实际编译单元中可用,而无需对它们进行限定。。。如上所述,静态导入的基本思想是,无论何时使用静态类、静态变量或枚举,都可以导入它们并避免键入

我将举例说明我的观点

import java.lang.Math;

class WithoutStaticImports {

 public static void main(String [] args) {
  System.out.println("round " + Math.round(1032.897));
  System.out.println("min " + Math.min(60,102));
 }
}
相同的代码,使用静态导入:

import static java.lang.System.out;
import static java.lang.Math.*;

class WithStaticImports {
  public static void main(String [] args) {
    out.println("round " + round(1032.897));
    out.println("min " + min(60,102));
  }
}

注意:静态导入会使您的代码读起来很混乱。

假设您在名为
MyClass
的包中有一个名为
myPackage
的类中有静态字段和方法,您希望通过键入
myStaticField
myStaticMethod
直接访问这些字段和方法,而无需每次键入
MyClass.myStaticField
MyClass.myStaticMethod

注意:您需要执行以下操作:
导入myPackage.MyClass
myPackage.

对于访问其他资源

导入
允许java程序员访问包的类,而无需包限定

静态导入
功能允许在没有类限定的情况下访问类的静态成员

import
提供类和接口的可访问性,而
static import
提供类的静态成员的可访问性

示例:

使用导入

使用静态导入


另请参见:

导入后的
静态
修饰符用于检索/使用类的静态字段。我使用
import static
的一个区域是从类中检索常量。 我们还可以在静态方法上应用
import static
。确保键入
import static
,因为
static import
错误


-这是一个非常好的资源,可以了解更多有关
导入静态

的信息。这是一个非常好的示例。npt在WW中的数学技巧

在另一个文件中

import static com.java2novice.stat.imp.pac1.MyStaticMembClass.*;

我完全同意@xsl上面的警告。对于junit的断言来说,它确实非常有用的一个方面是:导入静态org.junit.Assert.*用于所有的单元测试。--用于控件粘贴非常长且不太引人注目的文档文件,而不是编写简单的解释。@xsl是文章的下半部分应该在引号块中吗?看起来像是你键入的。@Ferrybig:这是链接文档中的一段引用。就像在Ruby中一样!写
导入静态java.lang.Math
而不带星号是否意味着什么?@AmadeusDrZaius不,导入静态只针对类的静态成员。回答得好!由于许多“新手”阅读了这篇文章,我们应该给他们一个小小的警告:不要过度使用星号来防止名称空间污染。
import static java.lang.System.*;    
class StaticImportExample{  
  public static void main(String args[]){  

   out.println("Hello");//Now no need of System.out  
   out.println("Java");  

 }   
} 
public class MyStaticMembClass {
 
    public static final int INCREMENT = 2;
     
    public static int incrementNumber(int number){
        return number+INCREMENT;
    }
}
import static com.java2novice.stat.imp.pac1.MyStaticMembClass.*;