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. NVIDIA Kernel级性能分析工具Nsight Compute入门详解

    1 功能初体验 1.1 分析实例 仍以之前的vectorAdd程序为分析目标,在新建的工程中只指定编译好的可执行文件及其输出report文件,其他部分都保持默认,然后直接点击"Launch& ...

  2. 星球助手发布更新v1.4.0

    星球助手发布更新v1.4.0,重要的更新内容有 ​ 添加了展示评论的功能,可复制评论内容,可展示图片 添加下载评论中的图片的功能 修复了帖子文字展示不全的问题 修复了问答帖子无法搜索的问题 修复了当帖 ...

  3. .NET 何以成为制造业数字化转型的基石:效率、生态与跨平台的制胜之道

    在制造业,特别是半导体设备通信领域,.NET因其开发效率.跨平台能力和成熟的生态系统,已成为主流技术之一.这篇文章做个具体分析制造业为什么钟爱.NET 技术. 一..NET在制造业的应用 半导体设备通 ...

  4. git进入vim模式的处理

    1.当git commit 没-m输入说明时,我们会进入vim模式,在此模式下可以进行提交说明: 2.输入i,进入insert输入模式,输入自己提交内容的说明: 3.输入完后,按ESC,下方inser ...

  5. grafana如何添加自定义geoJson地图

    grafana如何添加自定义geoJson地图 该方法研究了很久,网上没看到现成的,所以自己摸索出来了. 从阿里云下载 geoJson文件 例如 geo.datav.aliyun.com/areas_ ...

  6. P11363 [NOIP2024] 树的遍历

    P11363 [NOIP2024] 树的遍历 题意 给你一个 \(n\) 个点的树,定义边与边相邻当且仅当它们有一个公共端点.一条合法 dfs 路径从某条边出发,如果存在未访问的相邻的边,则必须选择其 ...

  7. Java8之StringJoiner类

    在java中遇到多个字符串拼接时都会使用StingBuilder或StringBuffer,而java8提供了一个新的类StringJoiner. StringJoiner是的StingBuilder ...

  8. 在 Conda 环境中,更换 R 语言的镜像源

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  9. DX12-1-DirectX3D初始化

    什么是 Direct3D 12? DirectX 12 引入了 Direct3D 的下一个版本,即 DirectX 的核心 3D 图形 API. 此版本的 Direct3D 比任何以前的版本更快.更高 ...

  10. m基于OFDM数字电视地面广播系统中频域同步技术研究

    1.算法概述 OFDM技术的基本构架如下所示: 注意系统中的虚线部分就是你要做的OFDM的频域同步模块.我们的MATLAB代码就是参考这个系统结构进行设计的.其中虚线就是本课题要做的代码部分.下面我们 ...