java基础-Class对象

<span style="white-space:pre">	</span>//注意它的private Class() {},意指不允许任何人经由编程方式产生Class object。
	//是的,其object 只能由JVM 产生。
	/*
	 * Class 类十分特殊。它和一般类一样继承自Object,其实体用以表达Java程序运行时的classes
	 * 和interfaces,也用来表达enum、array、primitive Java types(boolean, 
	 * byte, char, short, int, long, float, double)以及关键词void。当一个class
	 *被加载,或当加载器(class loader)的defineClass()被JVM调用,JVM 便自动产生一个
	 *Class 对象。如果您想借由“修改Java标准库源码”来观察Class 对象的实际生成时机(例如在Class
	 *的constructor内添加一个println()),这样是行不通的!因为Class并没有public 
	 *constructor。
	 * */
	
	public static void main(String [] args) throws NoSuchMethodException  {
		//Java允许我们从多种管道为一个class生成对应的Class object
		
		//getClass();
		String str = "abc";
		Class c1 = str.getClass();
		System.out.println(c1);//class java.lang.String
		
		//getSuperclass()
		Button b = new Button();
		Class c2 = b.getClass();
		Class c3 = c2.getSuperclass();
		System.out.println(c2);//class java.awt.Button
		System.out.println(c3);//class java.awt.Component
		
		//Class.forName()
		try{
		Class c4 = Class.forName("java.lang.String");
		System.out.println(c4);//class java.lang.String
		System.out.println(c4.getClass());//class java.lang.Class
		System.out.println(c4.getClass().getClass());//class java.lang.Class
		System.out.println(c4.getClass().getClass().getClass());//class java.lang.Class

		//Class c5 = Class.forName(".class");//输出错误信息
		
		}catch(ClassNotFoundException ex) {
			ex.printStackTrace();
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		//TYPE
		Class c5 = Long.TYPE;
		System.out.println(c5);//long
		System.out.println(c5.getConstructors());//[Ljava.lang.reflect.Constructor;@14318bb
		
		
	}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值