博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 类反射
阅读量:3960 次
发布时间:2019-05-24

本文共 1496 字,大约阅读时间需要 4 分钟。

Reflection允许运行中的Java程序对自身进行检查并能直接操作程序的内部属性。

以下为类的成员方法的查询程序。

import java.lang.reflect.Method;import java.util.Scanner;public class Main {
public static void main(String[] args) {
try{
System.out.println("请输入Java类的名称"); Scanner scanner = new Scanner(System.in); String className = scanner.next(); Class
c = Class.forName(className); Method[] declaredMethods = c.getDeclaredMethods(); System.out.println("类" + className + "的方法包括:"); for (int i = 0; i < declaredMethods.length; i++) {
System.out.println(declaredMethods[i].toString()); } } catch (ClassNotFoundException e) {
e.printStackTrace(); System.out.println(e); } }}

在控制台输入:

请输入Java类的名称java.util.Scanner

查询结果

在这里插入图片描述

  • 该程序使用Class.forName载入指定的类,然后调用 getDeclareMethods 来获取这个类中定义的方法列表。import java.lang.reflect.Method 是用来描述某个类中单个方法的类。
  • 对于构造函数、成员变量和成员方法来说,java.lang.Class提供4种独立的反射调用。以不同的方式来获得信息。

使用反射的时候遵循的3个步骤:

  • (1)获得想要操作的类的 java.lang.Class对象。常见的方式为:

    • Class c = Class.forName(“java.lang.String”): 得到一个String类的对象。
    • Class c = int.class: 得到基本类型整型(int类型)。
    • Class c = Integer.TYPE: 这条语句得到基本类型整型的封装类 Integer 定义的 TYPE 字段。
  • (2)调用上述的getDeclaredMethods()等方法,获得该类中定义的所有的成员方法或调用上述的getDeclaredFields()等方法,获得该类中定义的所有的成员变量。

  • (3)使用 reflection API 进一步获取相关信息。

    Class c = Class.forName("java.lang.String");Method m[] = c.getDeclaredMethods();System.out.println(m[0].toString());

    将以文本方式打印出String 中定义的第一个方法的原型。

转载地址:http://mbqzi.baihongyu.com/

你可能感兴趣的文章
非插件实现Typecho语法高亮
查看>>
windows 下 netsh 实现 端口映射(端口转发)
查看>>
两个好用的命令行工具 watch 和 rsync
查看>>
信安入门神级书单
查看>>
【IPFS指南】IPFS的竞争对手们(一)
查看>>
docker更换国内镜像
查看>>
CentOS 下 tree命令用法详解
查看>>
docker上传镜像至Registry时https报错解决方法
查看>>
安装 docker-compose (实测可用,妈妈再也不用担心被墙了)
查看>>
docker下删除none的images
查看>>
Linux提权获取敏感信息方法
查看>>
Ubuntu 16.04开机A start job is running for Raise network interface(5min 4s)解决方法
查看>>
Ubuntu 16.04开机隐藏菜单缩短时间
查看>>
Ubuntu 更换国内源
查看>>
Ubuntu16.04下Docker pull connection refused 解决办法
查看>>
通过 三大机制 揭秘 IPFS 工作原理
查看>>
Ubuntu 16.04卸载PostgresQL
查看>>
华为路由器交换机配置命令
查看>>
docker下运行kalilinux并配置ssh访问
查看>>
使用 Docker 容器应该避免的 10 个事情
查看>>