首页 > 编程 > Java > 正文

java之反射基础

2019-11-08 00:44:10
字体:
来源:转载
供稿:网友

1、反射是什么

  反射机制是在运行状态中,对任意的一个类,都可以知道这个类的所有方法和属性; 对于任何一个对象,都可以调用他的任意方法和属性,这种<动态获取/font>的信息以及动态调用对象的方法称为java的反射机制。

2、反射的作用

1、反编译: .class–>java2、通过反射机制访问对象的属性,方法,构造方法等

3、反射的具体实现

3、1反射相关的类

java.lang.Class; java.lang.reflect.Constructor; java.lang.reflect.Field; java.lang.reflect.Method;java.lang.reflect.Modifier;

3.2 获取大Class对象的三种方式

由于任何类都是Object的子类而Object中有getClass可以获取Class对象 - public final native Class<?> getClass(); -

package com.chb.reflectTest;public class Test { public static void main(String[] args) throws Exception { //第一种方式: Class<?> c1 = Class.forName("com.chb.reflectTest.Test"); //第二种方式:java中每个类都有class属性 Class<?> c2 = Test.class; //第三种方式:每个对象都与getClass()方法 Class<?> c3 = new Test().getClass(); }}

3.3创建对象

  获取Class对象以后,使用它创建对象,通过newInstance()调用无参构造函数进行创建对象,newInstance()返回一个Object对象:

Class<?> c1 = Class.forName("com.chb.reflectTest.Test");Object o1 = c1.newInstance();

3.4、获取数据

  分为所有属性和制定的属性

3.4.1、获取所有属性

获取修饰 通过java.long.reflect.ModifierClass<?> cString = Class.forName("java.lang.String"); //获取累的修饰和名称 System.out.PRint(Modifier.toString(cString.getModifiers())+" class " + cString.getSimpleName()+"{/n"); //获取所有属性 Field[] fields = cString.getDeclaredFields(); for (Field field : fields) { System.out.print("/t"); System.out.print( Modifier.toString(field.getModifiers())+" "//属性的修饰 + field.getType().getSimpleName()+" " + field.getName()+"/n"); } System.out.println("}");
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表