反射 学习笔记之Class类的使用

1  java世界中万事万物皆对象,除了2个特殊情况
  • int float等这些基本数据类型,(但是也都有Integer和Float等封装类做了弥补)
  • java staic定义的,它不是属于对象的,而是属于类的
2  类也是对象,类是java.lang.Class类的实例对象 相当于 "There is a class named Class"
下面用代码说明:“任何一个类都是Class类的实例对象,有三种表示方式”
package com.xsf.Test;

public class classDemo1 {
	public static void main(String[] args) {
		Test1 test1 = new Test1();//通过new的方式表示Test1的实例对象
		
		
		/**
		 * 其实Test1类也是对象是java.lang.Class对象的,如何表示?就不可以通过new的方式
		 * 任何一个类都是Class类的实例对象,有三种表示方式
		 * t1,t2,t3都是Test1的类类型因而都相等
		 */
		
		Class t1 = Test1.class;//第一种方式,任何一个类都有一个隐含的静态成员
		Class t2 = test1.getClass();//第二种方式,已知该类的对象通过getclass方法获取
	
		//t1,t2表示了Test1类的类类型(class Type)
		/**
		 * 万事万物皆对象
		 * 类也是对象是class类的实例对象
		 * 这个对象我们称为该类的类类型
		 */
		System.out.println(t1==t2);
		
		Class t3 = null;//第三种方式
		try {
			t3 = Class.forName("com.xsf.Test.ClassDemo1");
		} catch (ClassNotFoundException e) {
			
			e.printStackTrace();
		}
		System.out.println(t2==t3);
		//可以通过类的类类型创建该类的实例对象:通过t1,t2,t3创建Test1的实例对象
		try {
			Test1 t4 = (Test1)t1.newInstance();//需要有无参数的构造方法
			t4.init();
		} catch (InstantiationException e) {
			
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			
			e.printStackTrace();
		}
	}
}

class Test1{
	 void init() {
		System.out.println("Hello World!");

	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值