关闭

Java基础-----反射

202人阅读 评论(0) 收藏 举报
分类:


什么是反射

           Java不是动态语言,但是它却有着一个非常突出的动态相关机制:Reflection 就是反射机制

       反射是java语言的一个特性,在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。

哪里用到了反射机制
        比如JDBC的一段代码Class.forName("com.mysql.jdbc.Driver.class").newInstance();

        还有主流的SSH框架都用到了反射技术

反射机制的优缺点

             反射机制的优点就是可以实现动态创建对象和编译

                                  静态编译:在编译时确定类型,绑定对象,即通过。
                                  动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,

                                                    体现了多态的应用,有以降低类之间的藕合性。

            反射机制的缺点就是对性能有影响,执行效率低

反射的具体实现

    通过反射获取类

         //第一种方式:
        Class  clazz1 = Class.forName("java.lang,String");
        //第二种方式:
        Class clazz2 = String.class;
        //第三种方式:
        String str = new String();
        Class clzz3 = str.getClass()
通过反射创建对象      
        Class c =Class.forName("java.lang,String");
        //创建实例
        Object str1 = c.newInstance();
获得类的所有属性
        Class clazz = Class.forName("java.lang.String");
        //获取所有的属性
        Field[] field = clazz.getDeclaredFields();
        //存储属性
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append(Modifier.toString(clazz.getModifiers()) + " class " + clazz.getSimpleName() + "{\n");
        //每一个属性
        for(Field f:field){
            stringBuffer.append("\t");
            stringBuffer.append(Modifier.toString(f.getModifiers()) + " ");
            stringBuffer.append(f.getType().getSimpleName() + " ");
            stringBuffer.append(f.getName() + ";\n");
        }
        stringBuffer.append("}");
        System.out.println(stringBuffer);
获得类的指定属性
        //获取类
        Class clazz = Class.forName("test.Test");
        //获取hash属性
        Field field = clazz.getDeclaredField("name");
        //创建对象
        Object object = clazz.newInstance();
        //可访问
        field.setAccessible(true);
        //给field对象的hash属性赋值1
        field.set(object, "hello");
        System.out.println(field.get(object));


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5718次
    • 积分:200
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类