2、修饰类的方法,该方法称之为静态方法
Java代码
class A {
static void b(){
}
}
class A {
static void b(){
}
}
3、修饰嵌套类(接口),改类被称之为静态嵌套类(接口),通过静态的方式来访问它:
Java代码
public class T {
public static void main(String[] args) {
A a = new A();
A.B b = new A.B();
A.C c = a.new C();
System.out.println("a=" + a);
System.out.println("b=" + b);
System.out.println("c=" + c);
}
}
class A {
static class B {
}
class C {
}
}
public class T {
public static void main(String[] args) {
A a = new A();
A.B b = new A.B();
A.C c = a.new C();
System.out.println("a=" + a);
System.out.println("b=" + b);
System.out.println("c=" + c);
}
}
public class Test{
public static void main(String args[]);{
Test test = new Test();;
Class.forName("TestA",true,test.getClass();.getClassLoader(););;
}
} [/code][code=java]这时没有初始话TestA的实例,打印结果为:Static block executed![/code]通过控制Class.forName中的true属性可以发现,当改变为false时,就不会执行输出语句。
java工厂模式中经常用到newInstance方法来创建对象,因此可以从为什么使用工厂模式中找到答案。[code=java]class c=Class.forName("Example");
factory =(ExampleInterface)c.newInstance();(其中ExampleInterface是Example的接口)[/code]也可以写成如下形式:[code=java]String className="Example";
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();[/code]进一步可以写成如下形式:[code=java]String className= readingfromXmlConfig;(从xml配置文件中获得字符串)
class c =Class.forName(className);
factory = (ExampleInterface)c.newInstance();[/code]上面代码已经存在Example类名字,它的优点是无论Example类怎么变化,上述代码不变,甚至可以更换Example的兄弟类Example1,Example2等等,只要他们继承ExampleInterface接口就可以。JVM的角度看,使用关键字new创建一个新类时,该类可以没被加载,使用newInstance方法的时候就必须保证该类已经被加载且这个类已经连接了。类加载是通过class的静态加载方法forName()实现的。