今天继续研究公司的新项目,据说是京东的架构,研究看了一番,果然很牛逼,大致是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 }