java api查询反射_java反射机制API详解

之前给大家介绍了一下java反射机制是什么的内容,那么下面要给大家详细的介绍的就是java反射机制API一起来了解一下吧。

实现Java反射机制的类都位于java.lang.reflect包中,java.lang.Class类是Java反射机制API中的核心类。

java.lang.Class类

java.lang.Class类是实现反射的关键所在,Class类的一个实例表示Java的一种数据类型,包括类、接口、枚举、注解(Annotation)、数组、基本数据类型和void,Class没有公有的构造方法,Class实例是由JVM类加载时自动创建的。

在程序代码当中获得Class实例能够通过下面的代码来进行实现:

每一种类型包括类和接口等,都有一个class静态变量能够获得Class实例,除此之外,每一个对象都有getClass()方法能够获得Class实例,这个方法是由Object类提供的实例方法。

Class类提供了很多方法能够获得运行时对象的相关信息,下面的程序代码展示了其中一些方法。public class ReflectionTest01

{

public static void main(String[] args)

{

// 获得Class实例

// 1.通过类型class静态变量

Class clz1 = String.class;

String str = "Hello";

// 2.通过对象的getClass()方法

Class clz2 = str.getClass();

// 获得int类型Class实例

Class clz3 = int.class;

// 获得Integer类型Class实例

Class clz4 = Integer.class;

System.out.println("clz2类名称:" + clz2.getName());

System.out.println("clz2是否为接口:" + clz2.isInterface());

System.out.println("clz2是否为数组对象:" + clz2.isArray());

System.out.println("clz2父类名称:" + clz2.getSuperclass()

.getName());

System.out.println("clz2是否为基本类型:" + clz2.isPrimitive());

System.out.println("clz3是否为基本类型:" + clz3.isPrimitive());

System.out.println("clz4是否为基本类型:" + clz4.isPrimitive());

}

}

运行结果:clz2类名称:java.lang.String

clz2是否为接口:false

clz2是否为数组对象:false

clz2父类名称:java.lang.Object

clz2是否为基本类型:false

clz3是否为基本类型:true

clz4是否为基本类型:false

这里要注意一下,上面的代码当中的第10行和12行的区别,int是基本数据类型,所以输出结果为

true;Integer是类,是引用数据类型,所以输出结果为false。

java.lang.reflect包

java.lang.reflect包提供了反射中用到类说明:

9c3426edab3acb46db251fb89f6573dd.png

示例代码:public class ReflectionTest02

{

public static void main(String[] args)

{

try

{

// 动态加载xx类的运行时对象

Class c = Class.forName("java.lang.String");

// 获取成员方法集合

Method[] methods = c.getDeclaredMethods();

// 遍历成员方法集合

for (Method method: methods)

{

// 打印权限修饰符,如public、protected、private

System.out.print(Modifier.toString(method.getModifiers()));

// 打印返回值类型名称

System.out.print(" " + method.getReturnType()

.getName() + " ");

// 打印方法名称

System.out.println(method.getName() + "();");

}

}

catch (ClassNotFoundException e)

{

System.out.println("找不到指定类");

}

}

}

上面的代码当中第5行是通过Class的静态方法

858f9d47252fdd35101ceaa00a6c5cbb.png创建某个类的运行时对象,这当中的参数是类全名字符串,假如,在类路径当中找不到这个类,那么就抛出ClassNotFoundException异常,见代码第17行。

代码第7行是通过Class的实例方法getDeclaredMethods()返回某个类的成员方法对象数组,代码第9行是遍历成员方法集合,其中的元素是Method类型。

第11行,

59b1575623ad5e9e2811bd50a6c6bf17.png方法返回访问权限修饰符常量代码,是int类型。

第13行通过Method的getReturnType()方法获得方法返回值类型,之后,再调用getName()方法返回这个类型的名称。

第15行

d56f973a8184868c384643a9ea2d82cf.png返回方法名称。

对于java反射机制API的介绍你都清楚了吗?更多java反射机制java入门知识,可以继续关注奇Q工具网来进行了解哦。

推荐阅读:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值