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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天我们对框架进行了学习,请根据自己的理解回答下面问题:

1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?

2.获取 Class对象有几种方式?他们的用途都在哪?

3.如何获取Class对象中被私有的成员变量对象和成员方法对象?

36 个回复

倒序浏览
1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?

在运行期将类的组成部分封装成信息,通过class对象操作信息,调用方法等

越过编译期的泛型检查,通过反射运行配置文件中的配置信息,达到运行指定类和指定方法的目的.

1.可以在程序的运行的过程中操作这些对象。 2.可以解耦,提高程序的可扩展性。 3.这种动态获取类的信息的特性,可以极大的增强程序的灵活性

2.获取 Class对象有几种方式?他们的用途都在哪?

- 类名.class属性
- 对象名.getClass()方法
- Class.forName(全类名)方法

3.如何获取Class对象中被私有的成员变量对象和成员方法对象?

    (1)//返回与带有给定字符串名的类或接口相关联的 Class 对象
        Class<?> c = Class.forName(类的全路径);
    (2)//返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法
        Constructor<?> cons = c.getDeclaredConstructor();
    (3)//使用此 Constructor 对象表示的构造方法来创建该构造方sd法的声明类的新实例,并用指定的初始化参数初始     化该实例
        Object o = cons.newInstance();
    (4)//返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法。
        Method method = c.getDeclaredMethod(methodName);
    (5)//将此对象的 accessible 标志设置为指示的布尔值。值为 true 则指示反射的对象在使用时应该取消 Java 语     言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
        method.setAccessible(true);
    (6)//对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。个别参数被自动解包,以便与基本形参相匹     配,基本参数和引用参数都随需服从方法调用转换。
        method.invoke(o);

获取私有成员变量的方法是getDeclaredField(),流程大致与上面相同.修改赋值的方法是set().
回复 使用道具 举报
1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
就是将类的各个组成部分,分别封装为信息,这叫反射
可以在运行期间动态的获取对象,进行对象的创建和方法的执行,
进行了程序的解耦合,可以在不动源代码的情况下完成不同对象的切换

2.获取 Class对象有几种方式?他们的用途都在哪?
.new对象的时候会进行Class类加载
.当使用类名.静态方法/类名.静态变量,也会进行Class类加载
.当初始化子类的时候,会初始化父类对象,父类对象的Class类会加载
.当执行main方法所在的类的时候,该类的Class对象会加载
.当使用反射的形式获取Class对象,Class对象也会加载

3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
Field[] getDeclaredFields()/Field getDeclaredField(String name)
Method[] getDeclaredMethods()/Method getDeclaredMethod(String name, Class<?>... parameterTypes)
回复 使用道具 举报
1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
反射就是将类的各个组成部分封装为数组;
应用于程序运行时动态创建对象;
由于反射的动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期仍然可以扩展,可以通过修改配置文件达到创建对象的目的,所以被称为框架设计的灵魂

2.获取 Class对象有几种方式?他们的用途都在哪?
三种方式:
类名.class属性,用于通过类名获取指定类的Class对象;
对象名.getClass()方法,通过对象获取该对象的类的Class对象;
Class.forName(全类名)方法,用于获取指定类的Class对象;


3.如何获取Class对象中被私有的成员变量对象和成员方法对象?

使用.getDeclaredMethod获取指定的私有方法对象
使用.getDeclaredField获取指定的私有变量对象
回复 使用道具 举报
今天我们对框架进行了学习,请根据自己的理解回答下面问题:

1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
java反射机制是在运行状态中,对于任意一个类,都能够知道这个类所有属性和方法;对于一个对象,都能够调用它的任意的一个方法;这种动态获取的以及动态调用对象的功能称为java的反射机制。
应用场景:1.逆向代码 2.与注解相组合的框架 3.单纯的反射机制应用  4.动态生成类
因为反射技术提高了应用程序的可扩展性,应用起来非常简单,为用户和程序之间提供了可以交互的配置文件和接口

2.获取 Class对象有几种方式?他们的用途都在哪?
第一种方式通过对象getClass方法    多用于对象的获取字节码的方式   
第二种方式通过类的Class属性         多用于参数的传递
第三种方式通过Class类中的静态方法——forName()来实现   多用于配置文件,将类定义在配置文件中,读取文件加载类。

3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
通过Java反射的获取私有成员变量,调用私有方法。

回复 使用道具 举报
今天我们对框架进行了学习,请根据自己的理解回答下面问题:

1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
反射就是将类的各个组成部分(成员变量,构造方法,成员变量)进行分开分装,
因为反射可以动态的获取对象,大大的提升了代码的解耦合。

2.获取 Class对象有几种方式?他们的用途都在哪?
一共有有三种,
(1)通过类的Class来调取: 类名..class
(2)是根据对象来调取: 对象名.getClass
(3)是直接使用Class的静态方法来调取:forName(String className)

一般我们使用第三种居多,可以不生产对象直接调用。


3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
使用暴力反射,直接抑制访问限制,这样就可以直接调用。

回复 使用道具 举报
今天我们对框架进行了学习,请根据自己的理解回答下面问题:

1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
java反射机制是在运行状态中,对于任意一个类,都能够知道这个类所有属性和方法;对于一个对象,都能够调用它的任意的一个方法;这种动态获取的以及动态调用对象的功能称为java的反射机制。
应用场景:1.逆向代码 2.与注解相组合的框架 3.单纯的反射机制应用  4.动态生成类
因为反射技术提高了应用程序的可扩展性,应用起来非常简单,为用户和程序之间提供了可以交互的配置文件和接口

2.获取 Class对象有几种方式?他们的用途都在哪?
第一种方式通过对象getClass方法    多用于对象的获取字节码的方式   
第二种方式通过类的Class属性         多用于参数的传递
第三种方式通过Class类中的静态方法——forName()来实现   多用于配置文件,将类定义在配置文件中,读取文件加载类。

3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
通过Java反射的获取私有成员变量,调用私有方法。

回复 使用道具 举报
LPY 中级黑马 2019-5-6 21:32:12
7#

今天我们对框架进行了学习,请根据自己的理解回答下面问题:

1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
反射就是将类的各个组成部分(成员变量,构造方法,成员变量)进行分开分装,
因为反射可以动态的获取对象,大大的提升了代码的解耦合。

2.获取 Class对象有几种方式?他们的用途都在哪?
一共有有三种,
(1)通过类的Class来调取: 类名..class
(2)是根据对象来调取: 对象名.getClass
(3)是直接使用Class的静态方法来调取:forName(String className)

一般我们使用第三种居多,可以不生产对象直接调用。


3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
使用暴力反射,直接抑制访问限制,这样就可以直接调用。

回复 使用道具 举报
今天我们对框架进行了学习,请根据自己的理解回答下面问题:

1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
java反射机制是在运行状态中,对于任意一个类,都能够知道这个类所有属性和方法;对于一个对象,都能够调用它的任意的一个方法;这种动态获取的以及动态调用对象的功能称为java的反射机制。
应用场景:1.逆向代码 2.与注解相组合的框架 3.单纯的反射机制应用  4.动态生成类
因为反射技术提高了应用程序的可扩展性,应用起来非常简单,为用户和程序之间提供了可以交互的配置文件和接口

2.获取 Class对象有几种方式?他们的用途都在哪?
第一种方式通过对象getClass方法    多用于对象的获取字节码的方式   
第二种方式通过类的Class属性         多用于参数的传递
第三种方式通过Class类中的静态方法——forName()来实现   多用于配置文件,将类定义在配置文件中,读取文件加载类。

3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
通过Java反射的获取私有成员变量,调用私有方法。

回复 使用道具 举报
今天我们对框架进行了学习,请根据自己的理解回答下面问题:

1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
        反射是指在运行时去获取一个类、类的变量和方法信息并调用的一种机制。
        反射可以在运行期扩展程序功能。在运行期间,我们要修改程序功能时,可以通过修改配置文件,运用反射机制改变功能而不用修改源代码,所以反射被称为框架设计的灵魂。

2.获取 Class对象有几种方式?他们的用途都在哪?
        获取 Class对象有3种方式。分别是①Class的静态方法forName();②类名.class;③对象名.getClass()
        他们的用途:①Class的静态方法forName() 在需要读取配置文件信息时使用;②类名.class 通常在类的Class对象作为参数时被使用;③对象名.getClass() 通过反射获取对象已知方法时使用。


3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
        用.getDeclaredField()获取成员变量的对象,并用该对象调用.setAccessible(true)暴力反射,该对象调用.set()方法设置变量值;
        用.getDeclaredMethod()获取成员方法的对象,并用该对象调用.setAccessible(true)暴力反射,该对象调用.invoke()方法运行成员方法。

回复 使用道具 举报
1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
答:是指在运行时去获取一个类的变量和方法信息。然后通过获取到的信息来创建对象,调用方法的一种机制。
由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期仍然可以扩展。
应用场景:例:
                        数据库的配置,比如数据库地址,数据库类型,数据库名称,数据库用户名,数据库密码,如果说
                        这些配置都写入在程序代码中,那么后期如果数据库有变动,那么其程序代码也要跟着改动,耦合度太高,
                        成本太高,不合适在生产上运用。
                        如果说我们将数据库的这些信息配置在一个文件里,通过应用反射机制,若数据库有变动那么我们只需改动数据库配置文件即可。
                        这样的反射机制带来了极大的程序灵活性,降低了程序的耦合度,同时也降低了运营成本。

2.获取 Class对象有几种方式?他们的用途都在哪?
答:三种;
        1.类名.class属性;  用在参数指定时
        2.对象名.getClass()方法;        当已经存在一个对象时使用
        3.Class.forName(全类名)方法; 最灵活的方式用在使用配置文件时

3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
答:获取Class对象被私有的成员变量格式如下:
                       
                        Field 变量名 = Class对象.getDeclaredField("成员变量名");
                        变量名.setAccessible(true);
                        Constructor<?> constructor = Class对象.getConstructor();
                        Object obj = constructor.newInstance();
                        变量名.set(obj, "赋值的内容");
                        System.out.println(obj);                         
                                                 
        获取Class对象被私有的成员方法格式如下:
       
                        Method 变量名 = Class对象.getDeclaredMethod("成员方法名");
                        Constructor<?> constructor = Class对象.getConstructor();
                        Object obj = constructor.newInstance();
                        变量名.setAccessible(true);
                        变量名.invoke(obj);

点评

数据库配置文件是将***息进行抽取,单纯的读文件而已,没有用到反射技术  发表于 2019-5-8 14:42
回复 使用道具 举报
今天我们对框架进行了学习,请根据自己的理解回答下面问题:

1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
反射就是将类的各个组成部分(成员变量,构造方法,成员变量)进行分开分装,
因为反射可以动态的获取对象,大大的提升了代码的解耦合。

2.获取 Class对象有几种方式?他们的用途都在哪?
一共有有三种,
(1)通过类的Class来调取: 类名..class
(2)是根据对象来调取: 对象名.getClass
(3)是直接使用Class的静态方法来调取:forName(String className)

一般我们使用第三种居多,可以不生产对象直接调用。


3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
使用暴力反射,直接抑制访问限制,这样就可以直接调用
回复 使用道具 举报
今天我们对框架进行了学习,请根据自己的理解回答下面问题:

1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
java反射机制是在运行状态中,对于任意一个类,都能够知道这个类所有属性和方法;对于一个对象,都能够调用它的任意的一个方法;这种动态获取的以及动态调用对象的功能称为java的反射机制。
应用场景:1.逆向代码 2.与注解相组合的框架 3.单纯的反射机制应用  4.动态生成类
因为反射技术提高了应用程序的可扩展性,应用起来非常简单,为用户和程序之间提供了可以交互的配置文件和接口

2.获取 Class对象有几种方式?他们的用途都在哪?
第一种方式通过对象getClass方法    多用于对象的获取字节码的方式   
第二种方式通过类的Class属性         多用于参数的传递
第三种方式通过Class类中的静态方法——forName()来实现   多用于配置文件,将类定义在配置文件中,读取文件加载类。

3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
通过Java反射的获取私有成员变量,调用私有方法。

回复 使用道具 举报
1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
反射就是将类的各个组成部分封装为数组;
应用于程序运行时动态创建对象;
因为反射可以动态的获取对象,增加了代码的灵活性大大的提升了代码的解耦合。
2.获取 Class对象有几种方式?他们的用途都在哪?
三种方式:
类名.class,用于通过类名获取指定类的Class对象;
对象名.getClass()方法,通过对象获取该对象的类的Class对象;
Class.forName(全类名路径)方法,用于获取指定类的Class对象;

3.如何获取Class对象中被私有的成员变量对象和成员方法对象?

使用.getDeclaredMethod获取指定的私有方法对象,并使用暴力反射进行访问;
使用.getDeclaredField获取指定的私有变量对象,并使用暴力反射进行访问;
回复 使用道具 举报



1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
反射就是将类的各个组成部分(成员变量,构造方法,成员变量)进行分开分装,
因为反射可以动态的获取对象,大大的提升了代码的解耦合。

2.获取 Class对象有几种方式?他们的用途都在哪?
一共有有三种,
(1)通过类的Class来调取: 类名..class
(2)是根据对象来调取: 对象名.getClass
(3)是直接使用Class的静态方法来调取:forName(String className)

一般我们使用第三种居多,可以不生产对象直接调用。


3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
使用暴力反射,直接抑制访问限制,这样就可以直接调用。
回复 使用道具 举报


今天我们对框架进行了学习,请根据自己的理解回答下面问题:

1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
反射就是将类的各个组成部分(成员变量,构造方法,成员变量)进行分开分装,
因为反射可以动态的获取对象,大大的提升了代码的解耦合。

2.获取 Class对象有几种方式?他们的用途都在哪?
一共有有三种,
(1)通过类的Class来调取: 类名..class
(2)是根据对象来调取: 对象名.getClass
(3)是直接使用Class的静态方法来调取:forName(String className)

一般我们使用第三种居多,可以不生产对象直接调用。


3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
使用暴力反射,直接抑制访问限制,这样就可以直接调用。
回复 使用道具 举报
1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
答:
反射就是将类的各个组成部分分别封装为数组
可以在运行期间动态的获取对象,进行对象的创建和方法的执行,进行了程序的解耦合,可以在不动源代码的情况下完成不同对象的切换
反射可以在运气期间动态的获取对象,进行对象的创建和方法的执行。

2.获取 Class对象有几种方式?他们的用途都在哪?
答:
三种方式;
通过类名.class创建Class对象。
通过对象名.getClass()创建Class对象。
通过Class类的静态方法 forName()创建Class对象。

3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
答:
用getDeclaredField()方法获取象中被私有的成员变量对象
用getDeclaredMethod()方法获取象中被私有的成员方法对象
回复 使用道具 举报
1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
反射就是将类的各个组成部分封装为数组。由于反射的动态性,
可以极大的增强程序的灵活性,程序不用在编译期就完成确定,
在运行期仍然可以扩展,可以通过修改配置文件达到创建对象的目的,所以被称为框架设计的灵魂

2.获取 Class对象有几种方式?他们的用途都在哪?
1.类名.class2. 对象名.getClass() 3.Class.forName("类的全路径名");
第3种以后最常用,比如可以用在获取配置文件的信息。

3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
使用暴力反射,直接抑制访问限制。
调用.getDeclaredMethod获取指定的私有方法对象
调用.getDeclaredField获取指定的私有变量对象
回复 使用道具 举报

1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
反射就是将类的各个组成部分封装为数组;
应用于程序运行时动态创建对象;
由于反射的动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期仍然可以扩展,可以通过修改配置文件达到创建对象的目的,所以被称为框架设计的灵魂

2.获取 Class对象有几种方式?他们的用途都在哪?
三种方式:
类名.class属性,用于通过类名获取指定类的Class对象;
对象名.getClass()方法,通过对象获取该对象的类的Class对象;
Class.forName(全类名)方法,用于获取指定类的Class对象;


3.如何获取Class对象中被私有的成员变量对象和成员方法对象?

使用.getDeclaredMethod获取指定的私有方法对象
使用.getDeclaredField获取指定的私有变量对象
回复 使用道具 举报
今天我们对框架进行了学习,请根据自己的理解回答下面问题:

1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
反射就是将类的各个组成部分封装成数组,因为反射技术因为反射可以动态的获取对象,
大大的提升了代码的解耦合,提高了应用程序的可扩展性,为用户和程序之间提供了可交互的配置文件和接口。
2.获取 Class对象有几种方式?他们的用途都在哪?
有三种方式,类名.Class和对象名.getClass()和Class.forName(“类的全部路径”)。
类.class用于参数的传递;通过对象获取字节码的方式;用于配置文件,将类定义在配置文件中
,读取文件加载类
3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
分别使用getDeclaredFields跟getDeclaredConstructors方法。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马