黑马程序猿——JAVA高新技术——反射

----------android培训、java培训、java学习型技术博客、期待与您交流!------------

一、对于反射的概念

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

JAVA反射(放射)机制:“程序执行时,同意改变程序结构或变量类型,这样的语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++。Java,C#不是动态语言。可是JAVA有着一个很突出的动态相关机制:Reflection,用在Java身上指的是我们能够于执行时载入、探知、使用编译期间全然未知的classes。

换句话说,Java程序能够载入一个执行时才得知名称的class,获悉其完整构造(但不包含methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。---------官方概念

二、对于我个人的理解

一,先看一下反射的概念:

主要是指程序能够訪问,检測和改动它本身状态或行为的一种能力。并能依据自身行为的状态和结果。调整或改动应用所描写叙述行为的状态和相关的语义。

反射是java中一种强大的工具。可以使我们非常方便的创建灵活的代码。这些代码可以再执行时装配,无需在组件之间进行源码链接。可是反射使用不当会成本非常高。

二,反射机制的作用:

1,反编译:.class-->.java

2,通过反射机制訪问java对象的属性,方法。构造方法等;

这样好像更easy理解一些。下边我们详细看怎么实现这些功能。

三,在这里先看一下sun为我们提供了那些反射机制中的类:

java.lang.Class;

java.lang.reflect.Constructor; java.lang.reflect.Field;

java.lang.reflect.Method;

java.lang.reflect.Modifier;

非常多反射中的方法,属性等操作我们能够从这四个类中查询。最好是查询一下api文档,更好的解决

事实上概念仅仅是有助于你理解,更好的动手操作,才干提高你的解决能力。

1,反射机制获取类有三种方法。我们来获取Employee类型

1.    //第一种方式:

2.    Classc1 = Class.forName("Employee");

3.    //另外一种方式:

4.    //java中每一个类型都有class 属性.

5.    Classc2 = Employee.class;

6.    //第三种方式:

7.    //java语言中不论什么一个java对象都有getClass 方法

8.    Employeee = new Employee();

9.    Classc3 = e.getClass(); //c3是执行时类 (e的执行时类是Employee)

2,创建对象:获取类以后我们来创建它的对象,利用newInstance:

1.    Class c =Class.forName("Employee");

2.

3.    //创建此Class 对象所表示的类的一个新实例

4.    Objecto = c.newInstance(); //调用了Employee的无參数构造方法.

3,获取属性:分为全部的属性和指定的属性:

a,先看获取全部的属性的写法:

//获取整个类

1.                Class c = Class.forName("java.lang.Integer");

2.                  //获取全部的属性?

3.                Field[] fs = c.getDeclaredFields();

4.

5.                       //定义可变长的字符串,用来存储属性

6.                StringBuffer sb = new StringBuffer();

7.                //通过追加的方法,将每一个属性拼接到此字符串中

8.                //最外边的public定义

9.                sb.append(Modifier.toString(c.getModifiers()) + " class " + c.getSimpleName() +"{\n");

10.              //里边的每个属性

11.              for(Field field:fs){

12.                  sb.append("\t");//空格

13.                  sb.append(Modifier.toString(field.getModifiers())+" ");//获得属性的修饰符。比如public,static等等

14.                  sb.append(field.getType().getSimpleName() + " ");//属性的类型的名字

15.                  sb.append(field.getName()+";\n");//属性的名字+回车

16.              }

17.

18.              sb.append("}");

19.

20.              System.out.println(sb);

每天进步一点点,成功进步一大步,fighting!

时间: 2024-10-11 05:28:08

黑马程序猿——JAVA高新技术——反射的相关文章

黑马程序员——Java高新技术——反射的复写

由于第一段视频学习效果不理想,希望重新看一遍反射视频,并多方面寻找资料,重新写一遍总结,以期java能力早日提高. Java——反射 一.Class类 Class 类的实例表示正在运行的 Java 应用程序中的类和接口.所以,Class可以提供方法获得动态的java类中的各个属性: (由定义可以知道Class创建的思路就是获得某一个特定java类的信息然后传给Class的对象,那么具体怎么做呢?) 这里说得java类的信息指的就是该java类的计算机的字节码:传给 Class cls1: 所以有

黑马程序员——JAVA高新技术——反射

----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 一.对于反射的概念 对于JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. JAVA反射(放射)机制:"程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言".从这个观点看,Perl,Python,Ruby

黑马程序员——Java高新技术——反射机制

点击打开链接 点击打开链接 点击打开链接 android培训.<a">点击打开链接 点击打开链接 java培训.期待与您交流!">点击打开链接 点击打开链接 反射的基石--Class类 Java程序中的各个java类属于同一类事物,描述这类事物的java类名就是Class. Class类没有构造函数,不能new对象.怎么得到Class类的实例,有3中方法: ①类名.Class    Class  c1=Date.class; ②对象.getClass 获取对象所属的字

黑马程序员——Java高新技术代理

代理 普通代理 很多时候,我们使用别人代码往往会发现别人代码的功能并不是十分符合我们的需求,调用别人的方法的时候,总是先new一个对象,然后我们的前处理做完,然后调用别人代码的方法,再加入后处理,这样做往往十分麻烦.代理就为其他类提供了一种控制其对象的方法.代理类和委托类必须实现同一个接口,这样代理类才能在需要的时候代替委托类对象,执行委托类的方法. interface Solution{ public void doSomething(); } //委托类Demo实现了接口 class Dem

黑马程序员——java基础——反射

 黑马程序员--java基础--反射 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 反射 其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员. 反射就是把Java类中的各种成分映射成相应的java类. 简单说:反射技术可以对一个类进行解剖. 反射的基石-->Class类 1.java中的类是用来描述一类事物的共性,该类事物有什么属性,没有什么属性

黑马程序员——java高新技术(新特性、反射、泛型)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- java高新技术 第一部分——JDK1.5新特性 1.增强for循环 格式: for(元素类型 变量名 : Collection集合 & 数组 ) { }//增强for循环括号里写两个参数,第一个是声明一个变量,第二个就是需要迭代的容器 高级for循环和传统for循环的区别: 高级for循环在使用时,必须要明确被遍历的目标.这个目标,可以是Collection集合或者数组,如果遍历Collec

黑马程序员----Java高新技术之反射学习总结

------- android培训.java培训.期待与您交流! ---------- 反射的概念. 1.Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 精妙的总结就是:反射就是将Java类中的各个成分映射成相应的Java类. 3.在Java中,描述事物的各种类同样也是一种事物,也可以用面向对象的方法来描述,即也有一个类来描述众多的J

黑马程序员----java基础--反射机制

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.反射的基本描述 Java反射机制是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象方法的功能称为java语言的反射机制.动态获取类中信息,就是java反射.可以理解为对类的解剖.如果想要对指定名称的字节码文件进行加载并获取其中的内容并调用,这时就使用到了反射技术. 简单一

黑马程序员——JAVA基础-反射

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 反射是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都只能都调用它的任意一个 方法和属性,这种动态获取的信息一级动态调用对象的方法的功能呢个称为java 的反射机制. 反射其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象, 并将字节码文件中的内容都封装成对象,这样便于操作这些成员.就是把JAVA类中的各种成