精华内容
下载资源
问答
  • 力软敏捷开发框架具体功能和技术有哪些所属分类:其他开发工具:C#文件大小:125KB下载次数:2上传日期:2019-01-11 11:23:45上 传 者:little66说明:敏捷开发框架源码特点1.基本多层抽象工厂模式架构设计,2.支持...

    力软敏捷开发框架具体功能和技术有哪些

    所属分类:其他

    开发工具:C#

    文件大小:125KB

    下载次数:2

    上传日期:2019-01-11 11:23:45

    上 传 者:little66

    说明:  敏捷开发框架源码特点1.基本多层抽象工厂模式架构设计,2.支持Access、Sql Server、Oracle、Sqlite、MySql等多种常见数据库3.动态生成系统菜单4.动态反射打开Winform窗体5.可扩展支持Remoting、Web Services、Asp.net等不同结构系统6.所有数据层、UI层代码由“代码器”自动生成7.源码中包含“代码器”插件源码及模板源码,可自行修改

    (Source code features of agile development framework 1. Basic multi-layer abstract factory mode architecture design, 2. Support Access, Sql Server, Oracle, Sqlite, MySql and other common databases 3. Dynamic generation of system menus 4. Dynamic reflection to open Winform 5. Extensible support for Remoting, Web Services, Asp. net and other different structural systems 6. All data layer and UI layer codes are automatically generated by "coder". Source code includes "coder" plug-in source code and template source code, which can be modified by itself.)

    文件列表:[举报垃圾]

    力软敏捷开发框架具体功能和技术有哪些.docx, 129511 , 2018-12-28

    近期下载者:

    相关文件:

    收藏者:

    展开全文
  • 这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。 获取 Class 对象的两种方式 如果我们动态获取到这些信息,我们需要依靠 Class 对象。Class 类对象将一个类的方法、变量等信息告诉运行的...

    反射机制介绍

    JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。

    获取 Class 对象的两种方式

    如果我们动态获取到这些信息,我们需要依靠 Class 对象。Class 类对象将一个类的方法、变量等信息告诉运行的程序。Java 提供了三种方式获取 Class 对象:

    1.知道具体类的情况下可以使用:

    Class alunbarClass = TargetObject.class;
    

    但是我们一般是不知道具体类的,基本都是通过遍历包下面的类来获取 Class 对象

    2.通过 Class.forName()传入类的路径获取:

    Class alunbarClass1 = Class.forName("cn.javaguide.TargetObject");
    

    3.通过对象实例instance.getClass()获取:

    Employee e;
    Class alunbarClass2 = e.getClass();
    

    代码实例

    简单用代码演示一下反射的一些操作!

    1.创建一个我们要使用反射操作的类 TargetObject:

    package cn.javaguide;
    
    public class TargetObject {
        private String value;
    
        public TargetObject() {
            value = "JavaGuide";
        }
    
        public void publicMethod(String s) {
            System.out.println("I love " + s);
        }
    
        private void privateMethod() {
            System.out.println("value is " + value);
        }
    }
    

    2.使用反射操作这个类的方法以及参数

    package cn.javaguide;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    public class Main {
        public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchFieldException {
            /**
             * 获取TargetObject类的Class对象并且创建TargetObject类实例
             */
            Class<?> tagetClass = Class.forName("cn.javaguide.TargetObject");
            TargetObject targetObject = (TargetObject) tagetClass.newInstance();
            /**
             * 获取所有类中所有定义的方法
             */
            Method[] methods = tagetClass.getDeclaredMethods();
            for (Method method : methods) {
                System.out.println(method.getName());
            }
            /**
             * 获取指定方法并调用
             */
            Method publicMethod = tagetClass.getDeclaredMethod("publicMethod",
                    String.class);
    
            publicMethod.invoke(targetObject, "JavaGuide");
            /**
             * 获取指定参数并对参数进行修改
             */
            Field field = tagetClass.getDeclaredField("value");
            //为了对类中的参数进行修改我们取消安全检查
            field.setAccessible(true);
            field.set(targetObject, "JavaGuide");
            /**
             * 调用 private 方法
             */
            Method privateMethod = tagetClass.getDeclaredMethod("privateMethod");
            //为了调用private方法我们取消安全检查
            privateMethod.setAccessible(true);
            privateMethod.invoke(targetObject);
        }
    }
    

    输出内容:

    publicMethod
    privateMethod
    I love JavaGuide
    value is JavaGuide
    

    注意 : 有读者提到上面代码运行会抛出 ClassNotFoundException 异常,具体原因是你没有下面把这段代码的包名替换成自己创建的 TargetObject 所在的包 。

    Class<?> tagetClass = Class.forName("cn.javaguide.TargetObject");
    

    静态编译和动态编译

    • 静态编译: 在编译时确定类型,绑定对象
    • 动态编译: 运行时确定类型,绑定对象

    反射机制优缺点

    • 优点: 运行期类型的判断,动态加载类,提高代码灵活度。
    • 缺点: 1,性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,性能比直接的 java 代码要慢很多。2,安全问题,让我们可以动态操作改变类的属性同时也增加了类的安全隐患。

    反射的应用场景

    反射是框架设计的灵魂

    在我们平时的项目开发过程中,基本上很少会直接使用到反射机制,但这不能说明反射机制没有用,实际上有很多设计、开发都与反射机制有关,例如模块化的开发,通过反射去调用对应的字节码;动态代理设计模式也采用了反射机制,还有我们日常使用的 Spring/Hibernate 等框架也大量使用到了反射机制。

    举例:

    1. 我们在使用 JDBC 连接数据库时使用Class.forName()通过反射加载数据库的驱动程序;
    2. Spring 框架的 IOC(动态加载管理 Bean)创建对象以及 AOP(动态代理)功能都和反射有联系;
    3. 动态配置实例的属性;

    推荐阅读

    1. Java反射使用总结
    2. Reflection:Java 反射机制的应用场景
    3. Java 基础之—反射(非常重要)
    展开全文
  • 这种动态获取的信息以及动态调用对象的方法功能称为Java语言的反射机制。 2.获取Class对象的两种方式 如果我们动态获取到这些信息,我们需要依靠Class对象。Class类对象将一个类的方法、变量等信息告诉运行的程序。 ...

    1.反射机制介绍

    Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法功能称为Java语言的反射机制。

    2.获取Class对象的两种方式

    如果我们动态获取到这些信息,我们需要依靠Class对象。Class类对象将一个类的方法、变量等信息告诉运行的程序。
    1.如果指定具体类的情况下可以使用

    Class alunbarClass = TargetObject.class;
    

    但是我们一般是不知道具体类的,基本都是通过遍历包下面的类来获取Class对象。
    2.通过Class.forName()传入类的路径获取

    Class alunbarClass1 = Class.forName("cn.javaguidde.TargetObject");
    

    3.静态编译和动态编译

    静态编译:编译时确定类型,绑定对象
    动态编译:运行时确定类型,绑定对象

    4.反射机制优缺点

    优点:运行期间判断类型,动态加载类,提高代码灵活度
    缺点:
    1.性能瓶颈:
    反射相当于一系列解释操作,通知JVM要做的事情,性能比直接的Java代码要慢很多
    2.安全问题:
    让我们可以动态操作改变类的属性同时也增加了类的安全隐患。

    5.反射的应用场景

    1.我们在使用JDBC连接数据库时使用class.forName()通过反射加载数据库的驱动程序
    2.Spring框架的IOC(动态加载管理Bean)创建对象以及AOP功能都和反射有联系
    3.动态配置实例的属性

    6.反射和new的区别

    1.new只能用于编译期就能确定的类型,私有属性外部不能访问。而反射可以在运行时才确定类型并创建对象。私有属性外部可以访问,增加了灵活性。
    2.解耦合。比如你写一个DAO接口,就不需要每次都new一个实例,只需要在配置时候写好交给Spring,然后在要使用的时候拿出来就可以了。

    new实例化和反射实例化有什么区别?
    Reflection:Java反射机制的应用场景
    https://segmentfault.com/a/1190000010162647?utm_source=tuicool&utm_medium=referral

    Java基础之—反射(非常重要)
    https://blog.csdn.net/sinat_38259539/article/details/71799078

    展开全文
  • 这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。 获取 Class 对象的四种方式 如果我们动态获取到这些信息,我们需要依靠 Class 对象。Class 类对象将一个类的方法、变量等信息告诉运行的...

    反射机制介绍

    JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。

    获取 Class 对象的四种方式

    如果我们动态获取到这些信息,我们需要依靠 Class 对象。Class 类对象将一个类的方法、变量等信息告诉运行的程序。Java 提供了四种方式获取 Class 对象:

    1.知道具体类的情况下可以使用:

    Class alunbarClass = TargetObject.class;
    

    但是我们一般是不知道具体类的,基本都是通过遍历包下面的类来获取 Class 对象,通过此方式获取Class对象不会进行初始化

    2.通过 Class.forName()传入类的路径获取:

    Class alunbarClass1 = Class.forName("cn.javaguide.TargetObject");
    

    Class.forName(className)方法,内部实际调用的是一个native方法 forName0(className, true, ClassLoader.getClassLoader(caller), caller);

    第2个boolean参数表示类是否需要初始化,Class.forName(className)默认是需要初始化。

    一旦初始化,就会触发目标对象的 static块代码执行,static参数也会被再次初始化。

    3.通过对象实例instance.getClass()获取:

    Employee e = new Employee();
    Class alunbarClass2 = e.getClass();
    

    4.通过类加载器xxxClassLoader.loadClass()传入类路径获取

    class clazz = ClassLoader.LoadClass("cn.javaguide.TargetObject");
    

    通过类加载器获取Class对象不会进行初始化,意味着不进行包括初始化等一些列步骤,静态块和静态对象不会得到执行

    代码实例

    简单用代码演示一下反射的一些操作!

    1.创建一个我们要使用反射操作的类 TargetObject

    package cn.javaguide;
    
    public class TargetObject {
        private String value;
    
        public TargetObject() {
            value = "JavaGuide";
        }
    
        public void publicMethod(String s) {
            System.out.println("I love " + s);
        }
    
        private void privateMethod() {
            System.out.println("value is " + value);
        }
    }
    

    2.使用反射操作这个类的方法以及参数

    package cn.javaguide;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    public class Main {
        public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchFieldException {
            /**
             * 获取TargetObject类的Class对象并且创建TargetObject类实例
             */
            Class<?> tagetClass = Class.forName("cn.javaguide.TargetObject");
            TargetObject targetObject = (TargetObject) tagetClass.newInstance();
            /**
             * 获取所有类中所有定义的方法
             */
            Method[] methods = tagetClass.getDeclaredMethods();
            for (Method method : methods) {
                System.out.println(method.getName());
            }
            /**
             * 获取指定方法并调用
             */
            Method publicMethod = tagetClass.getDeclaredMethod("publicMethod",
                    String.class);
    
            publicMethod.invoke(targetObject, "JavaGuide");
            /**
             * 获取指定参数并对参数进行修改
             */
            Field field = tagetClass.getDeclaredField("value");
            //为了对类中的参数进行修改我们取消安全检查
            field.setAccessible(true);
            field.set(targetObject, "JavaGuide");
            /**
             * 调用 private 方法
             */
            Method privateMethod = tagetClass.getDeclaredMethod("privateMethod");
            //为了调用private方法我们取消安全检查
            privateMethod.setAccessible(true);
            privateMethod.invoke(targetObject);
        }
    }
    
    

    输出内容:

    publicMethod
    privateMethod
    I love JavaGuide
    value is JavaGuide
    
    

    注意 : 有读者提到上面代码运行会抛出 ClassNotFoundException 异常,具体原因是你没有下面把这段代码的包名替换成自己创建的 TargetObject 所在的包 。

    Class<?> tagetClass = Class.forName("cn.javaguide.TargetObject");
    

    静态编译和动态编译

    • 静态编译: 在编译时确定类型,绑定对象
    • 动态编译: 运行时确定类型,绑定对象

    反射机制优缺点

    • 优点: 运行期类型的判断,动态加载类,提高代码灵活度。
    • 缺点: 1,性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,性能比直接的 java 代码要慢很多。2,安全问题,让我们可以动态操作改变类的属性同时也增加了类的安全隐患。

    反射的应用场景

    反射是框架设计的灵魂。

    在我们平时的项目开发过程中,基本上很少会直接使用到反射机制,但这不能说明反射机制没有用,实际上有很多设计、开发都与反射机制有关,例如模块化的开发,通过反射去调用对应的字节码;动态代理设计模式也采用了反射机制,还有我们日常使用的 Spring/Hibernate 等框架也大量使用到了反射机制。

    举例:

    1. 我们在使用 JDBC 连接数据库时使用 Class.forName()通过反射加载数据库的驱动程序;
    2. Spring 框架的 IOC(动态加载管理 Bean)创建对象以及 AOP(动态代理)功能都和反射有联系;
    3. 动态配置实例的属性;

    作者:Snailclimb
    链接:什么是反射机制?反射机制的应用场景有哪些?
    来源:github

    展开全文
  • 反射就是在程序运行的过程中,我们可以通过一个类的字节码对象(Class对象),剖析出这个类的一切细节,知道他有哪些属性、方法、构造函数,甚至还可以动态的实例化一个对象。 Class对象是什么? Java在经过编译时...
  • 反射

    2019-09-30 21:43:58
    在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射...
  • Java反射机制

    2017-07-04 18:23:29
     在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射...
  • 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射...
  • Java反射

    2013-10-15 16:47:56
    这些功能可能不同的客户端要完成的事情不同,而server又不能提前确定需要具体哪些事情,又需要依赖客户端才能完成这些事情。利用回调或反射可以解决这些问题。 从设计上来说,作用二: 1,防止Server端代码暴露...
  • 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射...
  • java反射机制

    2018-04-06 14:13:38
    在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射...
  • 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射...
  • java 反射

    2011-08-29 17:50:03
    在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Jav
  • 由于反射技术是Java API中提供的功能,所以在这里我们不在做过多的介绍,而是通过测试用例,来了解一下反射技术的具体应用。下面我们将用反射技术,来实现上一篇中IOC容器实现的功能。属性注入构造函数注入接口注入...
  • c# -反射 初见

    2019-09-28 16:54:25
    反射是一个很强大的功能,不过好像有些消耗性能,大家慎重使用。...2.用到的情况有哪些? 编译器的提示功能、反编译、还有调用别人的dll时,其它我不知道的。。 3.下面直接奉上一个实例的代码,供参考。 ...
  • java 反射机制

    2016-03-11 09:58:14
    在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射...
  • Java 反射机制

    2011-06-07 18:23:21
    在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射...
  • JAVA反射机制

    2016-09-12 09:25:06
    在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言
  • Java反射机制学习

    2016-04-17 07:43:00
    在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 131
精华内容 52
关键字:

反射功能具体有哪些