A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xclyijin 中级黑马   /  2015-7-22 09:19  /  406 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xclyijin 于 2015-7-24 18:37 编辑

这是视频上说的获取字节码文件对象的三种形式:
第三种方式不懂,你既然都知道它的名称了,还要forName干什么?
import cn.itcast.bean.Person;
//要想要对字节码文件进行解剖,必须要有字节码文件对象。
public class ReflectDemo
{
        public static void main(String[] args) throws ClassNotFoundException {
                getClassObject_1();
                System.out.println("--------------------");
                getClassObject_2();
                System.out.println("--------------------");
                getClassObject_3();
        }
   /*
        * 获取字节码对象的方式:
        * 方式一:Object类中的getClass()方法的。
        * 想要用这种方式,必须要明确具体的类,并创建对象。
        * 麻烦。
        */
        public static void getClassObject_1(){
               
                Person p = new Person();
                Class clazz = p.getClass();
                Person p1 = new Person();
                Class clazz1 = p1.getClass();
                System.out.println(clazz == clazz1);
        }
        /*
        * 方式二:任何数据类型都具备一个静态的属性.class来获取其对应的Class对象。
        * 相对简单,但是还是要明确用到类中的静态成员。
        * 还是不够扩展。
        */
        public static void getClassObject_2(){
               
                Class clazz = Person.class;
                Class clazz1 = Person.class;
                System.out.println(clazz == clazz1);
        }
        /*
        * 方式三:只要通过给定的类的字符串名称就可以获取该类,更为扩展。
        * 可以用Class类中的方法完成。
        * 该方法就是forName。
        * 这种方法只要有名称即可,更为方便,扩展性更强。
        */
        public static void getClassObject_3() throws ClassNotFoundException {
               
                //可以把类的字符串名称写到配置文件中,然后读取出来。
                String className = "cn.itcast.bean.Person";
                Class clazz = Class.forName(className);
                System.out.println(clazz);
        }
}

2 个回复

倒序浏览
获取类名,是为了下面可以根据这个类名(之前设计好的,所以知道名)动态的获取这个类,利用反射技术可以在源程序没有该类情况下,给什么类就new什么对象。
回复 使用道具 举报
即使知道了类名,因为源程序已经写好了,也不能再new对象了,但如果后期写了一个类配置在配置文件中,源程序就可以通过反射获取该类的字节码文件对象,增强了后期程序的扩展,而且不用改动源程序
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马