Class类的使用

1.Class类
  1) 在面向对象的世界里,万事万物皆对象。(java语言中,静态的成员、普通数据类型除外)
   类是不是对象呢?类是(哪个类的对象呢?)谁的对象呢?
   类是对象,类是java.lang.Class类的实例对象
  2)这个对象到底如何表示
  3 )Class.forName("类的全称")
       不仅表示了,类的类类型,还代表了动态加载类
       区分编译、运行:
       编译时刻加载类是静态加载类、运行时刻加载类是动态加载类
  4)基本的数据类型
      void关键字  都存在类类型 

  5)Class类的基本API操作


package com.imooc.reflect;

public class ClassDemo1 {
	public static void main(String[] args) {
		//Foo的实例对象如何表示
		Foo foo1 = new Foo();//foo1就表示出来了.
		//Foo这个类 也是一个实例对象,Class类的实例对象,如何表示呢
		//任何一个类都是Class的实例对象,这个实例对象有三种表示方式
		
		//第一种表示方式--->实际在告诉我们任何一个类都有一个隐含的静态成员变量class
		Class c1 = Foo.class;
		
		//第二中表达方式  已经知道该类的对象通过getClass方法
		Class c2 = foo1.getClass();
		
		/*官网 c1 ,c2 表示了Foo类的类类型(class type)
		 * 万事万物皆对象,
		 * 类也是对象,是Class类的实例对象
		 * 这个对象我们称为该类的类类型
		 * 
		 */
		
		//不管c1  or c2都代表了Foo类的类类型,一个类只可能是Class类的一个实例对象
		System.out.println(c1 == c2);//输出结果为 true;
		
		//第三种表达方式
		Class c3 = null;
		try {
			c3 = Class.forName("com.imooc.reflect.Foo");//需要类的全称
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(c2==c3);//输出结果也为 true;

		
		//我们完全可以通过类的类类型创建该类的对象实例---->通过c1 or c2 or c3创建Foo的实例对象
		try {
			Foo foo = (Foo)c1.newInstance();//需要有无参数的构造方法
			foo.print();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
		
	}
}
class Foo{
	
	void print(){
		System.out.println("foo");
	}
}


参考:反射——Java高级开发必须懂的 http://www.imooc.com/learn/199

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值