class与Class的区别:class不过是描述类的一个关键字。而Class却是保存着运行时信息的类。
有三种方式获取Class对象
以public Test(){
private int a;
public Test() {}//无参构造
public Test(int i){
a=i
}//带参构造
} 举例
第一种通过Class.forName("类的全名称")获取
Class c1 = Class.forName("Test所在的类全名")
第二种通过一家实例化对象的getClass()方法获取
Test test = new Test()
Class c1 = test.getClass();
第三种通过类名.class获取
Class c2 = Test.class
综上c1、c2、c3是等价的
综上是有类得到class类的对象,也可以通过class类的对象得到类的对象
Test test1 = (Test) c1.newInstance()
Test test2 = new Test()
这里的test1余test2是等价的
值得说明的是得到test1的方法会默认覆盖无参数构造方法,如果在类中只有有参构造没有无参构造,那么程序运行将会出错
所以如果要用这种方法得到类的对象,类要么是不含构造函数,如果带有构造函数,至少有无参构造的存在,如果只有有参构造
那么是不行的