今天繼續研究公司的新項目,聽說是京東的架構,研究看了一番,果真很牛逼,大體是Maven+spingmvc+spring+mybatis+ehcache+velocity來搭建的,數據庫用的是mysql,開發工具用的是intelJ IDEA ,這個開發工具就不說了,剛接觸各類懵逼,各類不會操做,可是整體感受要比myeclipse反映的快,mybatis就更不用說了,可是用到的一個能夠根據數據庫表來自動生成mapper類(接口,持久層的dao類)、mapper.xml、pojo,因爲mybatis是不須要提供實現類,這下就非常方便了,只用創建數據庫表,而後把表配置在mybatis的相關配置文件中就能夠了,可是其中一個自動生成的query類中,居然還有一個聲明爲static的類,就來研究一下。java
java裏面static通常用來修飾成員變量或函數。但有一種特殊用法是用static修飾內部類,普通類是不容許聲明爲靜態的,只有內部類才能夠。被static修飾的內部類能夠直接做爲一個普通類來使用,而不需實例一個外部類(見以下代碼):mysql
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,則只能按以下方式調用:spring
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 }