黑马程序员——【Java反射学习】Class类的使用

来源:互联网 发布:云南大学软件学院 编辑:程序博客网 时间:2024/05/16 06:17
------Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
  • Class类的使用
  • 方法的反射
  • 成员变量的反射
  • 构造函数的反射
  • 反射的应用:测试泛型的本质

Class类的使用
1.Class类
①在面向对象的世界里,万事万物皆对象。java语言中,静态成员、普通数据类型都是对象。
类也是对象,类是java.lang.Class类的实例对象。
②Class类对象的表示方法:
class ClassDemo1
{
public static void main(String[] args)
{
Foo foo1=new Foo();//foo1就表示出来了。
//Foo这个类也是一个实例对象,Class类的实例对象的表达方式有:
//第一种方式-->实际在告诉我们,任何一个类都有一个隐含的静态成员变量
Class c1=Foo.class;
//第二种方式  已知该类的对象通过getClass方法
Class c2=foo1.getClass();
//官方c1,c2表示了Foo类的类类型(class type)
//万事万物皆对象,
//类也是对象,是Class类的实例对象
//这个对象我们称为该类的类类型。
//不管c1 or c2都代表了Foo类的类类型,一个类只可能是Class类的一个实例对象。
System.ouy.println(c1==c2);//输出结果为true
//第三种表达方式
try
{
Class c3=null;
c3=Class.forName("com.imooc.reflect.Foo");
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
System.out.println(c2==c3);//打印结果为true

//我们完全可以通过类的类类型创建该类的对象实例--->通过c1 or c2 or c3创建Foo的实例对象
try
{
Foo foo=(Foo)c1.newInstance();//因为是Foo的类类型,所以必须做强制类型转换
}
catch(){}//省略了catch代码
}

}

Class Foo
{
void print(){}
}












0 0