Java反射机制

在Java运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称Java语言的反射机制。通俗点讲,通过反射,该类对我们来说是完全透明的,想要获取任何东西都是可以的。

示例代码:

package com.demo.reflect;

 

import java.lang.reflect.Constructor;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.lang.reflect.Modifier;

 

public class ReflectDemo {

public static void main(String[] args) throws Exception {

Class<?> class = Class.forName("com.demo.reflect.Person");

//通过反射机制获取构造器

System.out.println("-------获取构造器Constructor--------");

Constructor<?>[] constructors = class.getDeclaredConstructors();

for (Constructor<?> constructor : constructors) {

StringBuilder builder = new StringBuilder();

// 获取修饰符Modifier

builder.append("\t" + Modifier.toString(constructor.getModifiers()));

// 获取名称

builder.append(" " + constructor.getName());

// 获取形参列表数据类型ParameterTypes

builder.append("(");

Class<?>[] parameterTypes = constructor.getParameterTypes();

for (Class<?> parameterType : parameterTypes) {

builder.append(parameterType.getSimpleName() + ", ");

}

builder.append(")");

System.out.println(builder.toString());

}

 

// 通过反射机制获取方法

System.out.println("-----方法Method-----");

Method[] methods = class.getDeclaredMethods();

for (Method method : methods) {

StringBuilder builder = new StringBuilder();

// 获取修饰符Modifier

builder.append("\t" + Modifier.toString(method.getModifiers()));

// 获取返回值ReturnType

Class<?> returnType = method.getReturnType();

builder.append(" " + returnType.getSimpleName());

// 获取方法名称

builder.append(" " + method.getName());

// 获取形参列表数据类型ParameterTypes

builder.append("(");

Class<?>[] rarameterTypes = method.getParameterTypes();

for (Class<?> rarameterType : rarameterTypes) {

builder.append(rarameterType.getSimpleName() + ", ");

}

builder.append(")");

System.out.println(builder.toString());

}

}

}

代码执行结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值