Class类

 
Java运行时系统一直对所有的对象进行所谓的运行时类型识别。这项信息记录了每个对象所属的类。虚拟机通常使用运行时类型信息选择正确的方法去执行。
一个Class描述一个类的,类型,属性,方法名等信息。
       使用静态方法forname来取得字符串对应的Class对象。
系统启动时包含 main 方法的类会被加载,它会加载所有它需要的类。每个被加载的类又都要加载它所需要的类,以些类推。对一个大型应用程序来说,这会花费很长的时间,用户也会因此觉得不耐烦。使用下面的技巧,你可以给用户造成快速启动的假相。不过,要确保main 方法所在的类淌有显式引用其他类。先显示一个启动画面,然后调用Class.forName手工强制加载其它类。
 
获到Class的三个方法
1.       运行时对象调用getClass方法。
2.       Class.forName(“”);方法,会加载类,并返回Class对象
3.       类的.class属性。
Class描述的是一种类型,需这类型未必是类。如int.class
 
虚拟机为每种类型管理独一无二的Class对象。因此可以使用==操作符来比较类对象。
类包括一无参的构造方法时,可以使用e.getClass().new Instance();方法得到一个新实例对象。
 
代码实例:
package com.jianshe;
 
/**
  * 下面演示了得到Class对象的三种方法。
  * 1. 通过对象得到Class对象
  * 2. 通过字符串得到Class对象
  * 3. 通过类型得到Class对象
  * 4. 从一个字符串创建新对象
  * 总结:当得到Class对象后就可以清楚的知道一个类型具有方法,属性等相关信息。
  * 并具可以从一个字符串创建新的对象。这里只能创建提供默认构造函数的对象,对于通过名称创建对象时传递参数,
  * 只能使用Constructor类的newInstance方法。
  * @author jiansheliu
  */
 
public class Test {
    public static void main(String[] args) {
       
       
        //1. 通过对象得到Class
        Integer i = Integer.valueOf(9);
        System. out .println(i.getClass().getName());;
       
        //2. 通过字符串得到Class
        try {
            Class name = Class.forName( "java.lang.Integer" );
            System. out .println(name.getName());
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
       
        //3. 通过类的属性得到Clss
        System. out .println(Integer. class .getName());
       
        //4. 从字条串创建新对象,使用newInstance对象只能创建
        try {
            Class name = Class.forName( "java.util.ArrayList" );
            java.util.ArrayList list = (java.util.ArrayList)name.newInstance();
            list.add( "sss" );
            System. out .println(list.size());
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
         
    }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值