static關鍵字修飾類


  今天繼續研究公司的新項目,據說是京東的架構,研究看了一番,果然很牛逼,大致是Maven+spingmvc+spring+mybatis+ehcache+velocity來搭建的,數據庫用的是mysql,開發工具用的是intelJ IDEA ,這個開發工具就不說了,剛接觸各種懵逼,各種不會操作,但是總體感覺要比myeclipse反映的快,mybatis就更不用說了,但是用到的一個可以根據數據庫表來自動生成mapper類(接口,持久層的dao類)、mapper.xml、pojo,由於mybatis是不需要提供實現類,這下就很是方便了,只用建立數據庫表,然后把表配置在mybatis的相關配置文件中就可以了,但是其中一個自動生成的query類中,竟然還有一個聲明為static的類,就來研究一下。

 

  java里面static一般用來修飾成員變量或函數。但有一種特殊用法是用static修飾內部類,普通類是不允許聲明為靜態的,只有內部類才可以。被static修飾的內部類可以直接作為一個普通類來使用,而不需實例一個外部類(見如下代碼):

 1 public class OuterClass {
 2     public static class InnerClass{
 3         InnerClass(){
 4             System.out.println("============= 我是一個內部類'InnerClass' =============");
 5         }
 6     }
 7 }
 8 
 9 
10 public class TestStaticClass {
11     public static void main(String[] args) {
12         // 不需要new一個InnerClass
13         new OuterClass.InnerClass();
14     }
15 }

如果沒有用static修飾InterClass,則只能按如下方式調用:

 1 package inner_class;
 2 
 3 public class OuterClass {
 4     public class InnerClass{
 5         InnerClass(){
 6             System.out.println("============= 我是一個內部類'InnerClass' =============");
 7         }
 8     }
 9 }
10 
11 public class TestStaticClass {
12     public static void main(String[] args) {
13         // OutClass需要先生成一個實例,然后再new一個InnerClass();
14         OuterClass oc = new OuterClass();
15         oc.new InnerClass();
16     }
17 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM