Java基础-----反射

原创 2015年07月08日 18:02:15


什么是反射

           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));


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java反射(一)----基础介绍

java反射基础

java基础反射IO流线程模式

  • 2011-05-12 23:14
  • 11.13MB
  • 下载

12.尚硅谷_java基础_反射

  • 2013-09-17 13:39
  • 889KB
  • 下载

黑马程序员——java基础笔记:反射机制

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-一:反射机制的概念 反射,从字面来理解,就是反着来,我们正常的习惯是通过对象来调用属性和方法,反射机制给我们提供了...

JAVA基础-反射-枚举

  • 2016-02-19 11:59
  • 28KB
  • 下载

JAVA常用基础知识点[继承,抽象,接口,静态,枚举,反射,泛型,多线程.]

类的继承 Java只支持单继承,不允许多重继承  - 一个子类只能有一个父类  - 一个父类可以派生出多个子类    子类继承了父类,就继承了父类的方法和属性。  在子类中,可以使用父...

黑马程序员——高新技术---Java基础-反射

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ 一反射:就是通过class文件对象,去使用该文件中的成员变量,构造...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)