8.20Java反射机制之API
2021/8/23 20:05:52
本文主要是介绍8.20Java反射机制之API,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
8.20Java反射机制之API
实现 Java
反射机制的类都位于java.lang.reflect
包中,java.lang.Class
类是 Java 反射机制 API 中的核心类。
java.lang.Class
类
特点:
-
Class 类的一个实例表示 Java 的一种数据类型,包括类、接口、枚举、注解(Annotation)、数组、基本数据类型和 void。
-
Class 没有公有的构造方法,Class 实例是由 JVM 在类加载时自动创建的。
实现Class实例:
// 1. 通过类型class静态变量 Class clz1 = String.class; String str = "Hello"; // 2. 通过对象的getClass()方法 Class clz2 = str.getClass();
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; //int 是基本数据类型,所以输出结果为 true; // 获得Integer类型Class实例 Class clz4 = Integer.class; //Integer 是包装类,是引用数据类型,所以输出结果为 false。 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()); } }
java.lang.reflect
包
java.lang.reflect 包提供了反射中用到类:
-
Constructor 类:提供类的构造方法信息。
-
Field 类:提供类或接口中成员变量信息。
-
Method 类:提供类或接口成员方法信息。
-
Array 类:提供了动态创建和访问 Java 数组的方法。
-
Modifier 类:提供类和成员访问修饰符信息。
public class ReflectionTest02 { public static void main(String[] args) { try { // 动态加载xx类的运行时对象 Class c = Class.forName("java.lang.String"); //通过 Class 的静态方法forName(String)创建某个类的运行时对象,其中的参数是类全名字符串--->注意参数的特点。在类路径中找不到这个类则抛出 ClassNotFoundException 异常 // 获取成员方法集合 Method[] methods = c.getDeclaredMethods(); //通过 Class 的实例方法 getDeclaredMethods() 返回某个类的成员方法对象数组 // 遍历成员方法集合 for (Method method : methods) { // 打印权限修饰符,如public、protected、private System.out.print(Modifier.toString(method.getModifiers())); //method.getModifiers()方法返回访问权限修饰符常量代码,是 int 类型--->用int表示了访问修饰符。数字代表的含义可以通过Modifier.toString(int)方法转换为字符串。 // 打印返回值类型名称 System.out.print(" " + method.getReturnType().getName() + " "); //getReturnType() 方法获得方法返回值类型,再调用 getName() 方法返回该类型的名称。 // 打印方法名称 System.out.println(method.getName() + "();"); //返回方法名称。 } } catch (ClassNotFoundException e) { System.out.println("找不到指定类"); } } }
这篇关于8.20Java反射机制之API的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27本地多文件上传的简单教程
- 2024-11-27低代码开发:初学者的简单教程
- 2024-11-27如何轻松掌握拖动排序功能
- 2024-11-27JWT入门教程:从零开始理解与实现
- 2024-11-27安能物流 All in TiDB 背后的故事与成果
- 2024-11-27低代码开发入门教程:轻松上手指南
- 2024-11-27如何轻松入门低代码应用开发
- 2024-11-27ESLint开发入门教程:从零开始使用ESLint
- 2024-11-27Npm 发布和配置入门指南
- 2024-11-27低代码应用课程:新手入门指南