import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier; public class ReflectionDemo {
public static void main(String[] args) {
ReflectionDemo.paresClass("java.util.Date");
} public static void paresClass(String className) { try {
Class cl = Class.forName(className);
cl.getComponentType();
Class supercl = cl.getSuperclass();
String modifiers = Modifier.toString(cl.getModifiers());
if (modifiers.length() > 0) {
System.out.print(modifiers + " ");
}
System.out.print("class" + className);
if (supercl != null && supercl != Object.class) {
System.out.print(" extends " + supercl.getName());
}
System.out.print("\n{\n");
printConstructor(cl);
System.out.println();
printMethods(cl);
System.out.println();
printFields(cl);
System.out.println();
} catch (Exception e) { }
} private static void printFields(Class cl) {
Field[] fields = cl.getDeclaredFields();
for (Field f : fields) {
Class type = f.getType();
String name = type.getName();
System.out.print(" ");
String modifiers = Modifier.toString(f.getModifiers());
if (modifiers.length() > 0) {
System.out.print(modifiers + " ");
}
System.out.println(type.getName() + " " + name + ";");
}
} private static void printMethods(Class cl) {
Method[] methods = cl.getDeclaredMethods();
for (Method m : methods) {
Class retType = m.getReturnType();
String name = m.getName(); System.out.print(" ");
String modifiers = Modifier.toString(m.getModifiers());
if (modifiers.length() > 0) {
System.out.print(modifiers + " ");
}
System.out.print(retType.getName() + " " + name + "(");
Class[] paramTypes = m.getParameterTypes();
for (int j = 0; j < paramTypes.length; j++) {
if (j > 0) {
System.out.print(",");
}
System.out.print(paramTypes[j].getName());
}
System.out.println(");");
}
} private static void printConstructor(Class cl) {
Constructor[] constructors = cl.getDeclaredConstructors();
for (Constructor c : constructors) {
String name = c.getName();
System.out.print(" ");
String modifiers = Modifier.toString(c.getModifiers());
if (modifiers.length() > 0) {
System.out.print(modifiers + " ");
}
System.out.print(name + "(");
Class[] paramTypes = c.getParameterTypes();
for (int j = 0; j < paramTypes.length; j++) {
if (j > 0) {
System.out.print(",");
}
System.out.print(paramTypes[j].getName());
}
System.out.println(");");
}
}
}

Java code lib 反射查询类结构的更多相关文章

  1. Java注解和反射笔记

    Java注解和反射笔记 1 注解 1.1 定义 Annotation是从JDK1.5开始引入的技术 作用 不是程序本身,可以对程序作出解释 可以被其他程序(编译器等)读取 格式 @注释名,可以添加一些 ...

  2. Java中的反射和注解

    前言 在Java中,反射机制和注解机制一直是一个很重要的概念,那么他们其中的原理是怎么样呢,我们不仅仅需要会使用,更要知其然而之所以然. 目录 反射机制 反射如何使用 注解定义 注解机制原理 注解如何 ...

  3. 浅说Java中的反射机制(二)

    写过一篇Java中的反射机制,不算是写,应该是抄了,因为那是别人写的,这一篇也是别人写的,摘抄如下: 引自于Java基础--反射机制的知识点梳理,作者醉眼识朦胧.(()为我手记) 什么是反射? 正常编 ...

  4. 4 Java学习之 反射Reflection

    1. 反射概念  反射机制就是:动态地获取类的一切信息,并利用这些信息做一些你想做的事情. java反射机制能够知道类名而不实例化对象的状态下,获得对象的属性或调用方法. JAVA反射机制是在运行状态 ...

  5. 黑马程序员:Java基础总结----反射

    黑马程序员:Java基础总结 反射   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 反射 反射的基石:Class类 Class类代表Java类,它的各个实例对象又分别 ...

  6. SQL to Java code for Elasticsearch

    Elasticsearch虽然定位为Search Engine,但是因其可以持久化数据,很多时候,我们把Elasticsearch当成Database用,但是Elasticsearch不支持SQL,就 ...

  7. java基础(十一 )-----反射——Java高级开发必须懂的

    本文我们通过一个实际的例子来演示反射在编程中的应用,可能之前大家对反射的学习,仅仅是停留在概念层面,不知道反射究竟应用在哪,所以是一头雾水.相信通过这篇教程,会让你对反射有一个更深层次的认知. 概念 ...

  8. 第89节:Java中的反射技术

    第89节:Java中的反射技术 反射技术是动态的获取指定的类,和动态的调用类中的内容(没有类前就可以创建对象,将对象的动作完成,这就是动态的获取指定的类). 配置文件把具体实现的类名称定义到配置文件中 ...

  9. Java SE之反射技术[Class,Field](一)

    一.什么是反射? 反射库(Reflection Library)提供了一个非常丰富且精心设计的工具集,以便编写能够动态操纵Java代码的程序.这项功能被大量地应用在JavaBeans中,它是Java组 ...

  10. 【Java】【反射】

    一,java的核心机制 java有两种核心机制:java虚拟机(JavaVirtual Machine)与垃圾收集机制(Garbage collection): Java虚拟机:是运行所有Java程序 ...

随机推荐

  1. BOE(京东方)“向新2025”年终媒体智享会首站落地上海 六大维度创新开启产业发展新篇章

    12月17日,BOE(京东方)以"向新2025"为主题的年终媒体智享会在上海启动.正值BOE(京东方)新三十年的开局之年,活动全面回顾了2024年BOE(京东方)在各领域所取得的领 ...

  2. 百度网盘ByPy使用配置指南

    作者:SkyXZ CSDN:SkyXZ--CSDN博客 博客园:SkyXZ - 博客园 主要是ByPy不限速哈哈哈哈哈哈哈 由于有时候国内不方便上谷歌云盘,所以很多开源项目的大数据集.预训练模型等也会 ...

  3. helpyouhelpyou@cock.li 加密数据库恢复

    联系:手机/微信(+86 13429648788) QQ(107644445) 标题:.IQ0003后缀名勒索恢复 作者:惜分飞版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权 ...

  4. Mysql迁移到Sql Server

    因项目需要,数据库从Mysql迁移到MsSql.使用工具 ssma for mysql (微软提供). 下载地址:https://www.microsoft.com/en-us/download/de ...

  5. 软件神器 -- pc控制安卓 之 adb

    需要下载ADB的环境,点击超链接下载 -> 谷歌官方下载   网盘下载  .https://adb.clockworkmod.com/ (此处仅提供Windows版本,如需Linux.Mac版本 ...

  6. 应用安全 --- frida脚本 之 dump 自动化动脱 so

    为什么我要动态在内存中查找so并下载修复一个so,因为这个so文件被安全软件进行了加固处理使得代码大面积加密,用ida打开后会发现代码是红色的报错 用到的脱壳so的工具: https://github ...

  7. KAL1 LINUX 官方文档之通用---kali域名

    卡利(Kali)有很多子域,这些子域可能对您有用: https://www.kali.org/:Kali Linux的官方网站!用户可以找到下载链接,博客,培训,文档等. https://www.ka ...

  8. XPOSED优秀模块列表 --SSLUnpinning - 证书固定绕过

      如果您需要使用 Burp Proxy 之类的工具拦截来自使用证书固定的应用程序的流量,SSLUnpinning 将帮助您完成这项艰巨的工作!通过 Xposed 框架的 SSLUnpinning,在 ...

  9. java编程开发之若依vue --- 部署

    部署的大致步骤 0.配置环境,jdk下载安装配置环境变量,Mysql下一步就好记住用户名和密码,Redis下载win版本运行即可,Maven 下载配置环境变量修改本地库存放位置,Node 下一步就好设 ...

  10. m基于GA遗传算法的电动汽车有序充电控制策略matlab仿真

    1.算法描述 首先介绍MATLAB部分的遗传算法的优化算法介绍: 遗传算法的原理 遗传算法GA把问题的解表示成"染色体",在算法中也即是以二进制编码的串.并且,在执行遗传算法之前, ...