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

来源:互联网 发布:很火的网络歌曲 编辑:程序博客网 时间:2024/05/02 20:36
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!");}}


0 0
原创粉丝点击