什么是类发射
来源:互联网 发布:网络电视华人台 编辑:程序博客网 时间:2024/05/21 17:51
什么是类发射
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。
反射(Reflection)是Java程序开发语言的特征之一,它允许运行中的Java程序对自身进行检查, 也称自审,并能直接操作程序的内部属性。例如,使用它能获得Java类中各成员的名称并显示出来。
Java的这一能力在实际应用中应用得很多,在其它的程序语言中根本就不存在这一牲。例如,Pascal、C或者C++中就没有办法在程序中获得函数定义相关的信息。
JavaBean是类反射的实际应用之一,它能让一些工具可视化的操作软件组件。这些工具通过类反射动态的载入并取得Java组件(类)的属性。后面学习的各种框架,基本上都会有反射的使用。
反射使用的三个步骤
第一步:获得你想操作的类的java.lang.Class对象。在运行中的Java程序中,用java.lang.Class类来描述类和接口等。
第二步:调用诸如getDeclaredMethods的方法,取得该类中定义的所有方法的列表。
第三步:使用反射的API来操作这些信息。
获取class对象的三种方式
方式一
通过对象的getClass方法进行获取。这种方式需要具体的类和该类的对象,以及调用getClass方法。
方式二
任何数据类型(包括基本数据类型)都具备着一个静态的属性class,通过它可直接获取到该类型对应的Class对象。这种方式要使用具体的类,然后调用类中的静态属性class完成,无需调用方法,性能更好。
方式三
通过Class.forName()方法获取。这种方式仅需使用类名,就可以获取该类的Class对象,更有利于扩展。
package reflect.instance;import vo.Person;public class ReflectGetClass {public static void main(String[] args) { getClass1(); fetClass2(); getClass3();}// 通过Class.forName(str)的方式获取Class对象,该方式依赖的是字符串(类的名字),可以实现解耦private static void getClass3() { Class c;try {c = Class.forName("vo.Person"); System.out.println(c);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//通过对象getClass()方法获取private static void getClass1() { Person p=new Person("jack",2); Class c=p.getClass(); System.out.println(c);}//任何数据类型(包括基本数据类型)度具备一个静态的属性class,通过它可直接获取到该类型的Class对象private static void fetClass2(){//Class c=Person.class;//Class c=int.class;//Class c=String.class;Class c =Integer.class;System.out.println(c);}}
package vo;public class Person { String name; int age;public Person(String name, int age) {super();this.name = name;this.age = age;}}
- 什么是类发射
- 什么是类,什么是对象?
- 什么是类什么是对象
- 什么是类?什么是对象 ?
- 什么是类。什么是对象
- 什么是类,什么是对象?
- Android基于box2d开发弹弓类游戏[五]-------------发射子弹
- 通过发射获取类的所有属性大全
- 发射炮弹
- 发射层
- java 发射
- 发射站
- 什么是类?
- 什么是类
- 什么是类
- 什么是类
- 什么是类
- 什么是类
- android.support.v7.internal.widget.ActionBarOverlayLayout could not be instantiated
- mysql create database 指定utf-8编码
- 工厂方法与抽象工厂结合(Pizza)
- Sql 函数
- 仿QQ 拖动小红点原理及其实现
- 什么是类发射
- [leetcode-273]Integer to English Words(java)
- Android自学笔记之ProgressBar进度条的属性、常用方法及使用
- freemarker各种转换
- leetcode-258-Add Digits
- 将 paired count 和unpaired count 相加
- 野人学Android基础篇之初探UI控件第六课--ListView和他的adapter们(四)
- Maven的Archetype简介
- 苹果应用提交的"Missing Push Notification Entitlement"警告