Java import static 的用法

xiaoxiao2021-02-28  96

https://stackoverflow.com/questions/162187/what-does-the-static-modifier-after-import-mean

Question

问题,一定有原因,没有原因,就没有问题. 我怎么遇到import static package这个问题呢? 在看Spring的maven Guides的时候,在一个Test代码中遇到的:

package hello; import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.*; import org.junit.Test; public class GreeterTest { private Greeter greeter = new Greeter(); @Test public void greeterSaysHello() { assertThat(greeter.sayHello(), containsString("Hello")); } }

Answer

赶紧找谷老师请教,谷老师不慌不忙把stackoverflow放到我面前,喏,就这个,自己看吧. 第一条答案有239 vote!作者是xsl(吓死了). 答案是这样写的:

static import的声明和普通的import声明没有太大的区别, 普通的import声明引用别的包里面的类,可以让我们省略包名,直接使用该类 static import声明引入了一个类中的静态成员,包括方法或变量.这样在使用这些静态方法或变量的时候,就不需要使用类名来调用了.

Demo

下面辅以一个简单的小程序来体会一下. 首先在几个类, com.generic.Commons.java com.myOwn.Test.java com.others.Dog.java

Commons.Java代码如下:

package com.generic; import java.util.Date; public class Commons { public static void printDate() { System.out.println(new Date()); } public static int age; public String name; public void printHello() { System.out.println("hello"); } }

Test.java

package com.myOwn; //这里引用了Commons的printDate静态方法 import static com.generic.Commons.printDate; //这里引用了Commons的age静态成员变量. import static com.generic.Commons.age; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub //由于上面的静态引用,这里的age,便可以不需要通过Commons来调用,就可以直接使用. age = 0; System.out.println(age); //这里的原理同上. printDate(); //这歌大家都懂,没有引入指定包中的指定类,所以需要把类所在的包名写全 new com.others.Dog(); } } package com.others; public class Dog { }

Summary

其实,在eclipse,用到static import的时候,你根本无法用点(.)来获取到非静态的成员. 知识点很简单.

转载请注明原文地址: https://www.6miu.com/read-75613.html

最新回复(0)