Java code lib 反射查询类结构
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 反射查询类结构的更多相关文章
- Java注解和反射笔记
Java注解和反射笔记 1 注解 1.1 定义 Annotation是从JDK1.5开始引入的技术 作用 不是程序本身,可以对程序作出解释 可以被其他程序(编译器等)读取 格式 @注释名,可以添加一些 ...
- Java中的反射和注解
前言 在Java中,反射机制和注解机制一直是一个很重要的概念,那么他们其中的原理是怎么样呢,我们不仅仅需要会使用,更要知其然而之所以然. 目录 反射机制 反射如何使用 注解定义 注解机制原理 注解如何 ...
- 浅说Java中的反射机制(二)
写过一篇Java中的反射机制,不算是写,应该是抄了,因为那是别人写的,这一篇也是别人写的,摘抄如下: 引自于Java基础--反射机制的知识点梳理,作者醉眼识朦胧.(()为我手记) 什么是反射? 正常编 ...
- 4 Java学习之 反射Reflection
1. 反射概念 反射机制就是:动态地获取类的一切信息,并利用这些信息做一些你想做的事情. java反射机制能够知道类名而不实例化对象的状态下,获得对象的属性或调用方法. JAVA反射机制是在运行状态 ...
- 黑马程序员:Java基础总结----反射
黑马程序员:Java基础总结 反射 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 反射 反射的基石:Class类 Class类代表Java类,它的各个实例对象又分别 ...
- SQL to Java code for Elasticsearch
Elasticsearch虽然定位为Search Engine,但是因其可以持久化数据,很多时候,我们把Elasticsearch当成Database用,但是Elasticsearch不支持SQL,就 ...
- java基础(十一 )-----反射——Java高级开发必须懂的
本文我们通过一个实际的例子来演示反射在编程中的应用,可能之前大家对反射的学习,仅仅是停留在概念层面,不知道反射究竟应用在哪,所以是一头雾水.相信通过这篇教程,会让你对反射有一个更深层次的认知. 概念 ...
- 第89节:Java中的反射技术
第89节:Java中的反射技术 反射技术是动态的获取指定的类,和动态的调用类中的内容(没有类前就可以创建对象,将对象的动作完成,这就是动态的获取指定的类). 配置文件把具体实现的类名称定义到配置文件中 ...
- Java SE之反射技术[Class,Field](一)
一.什么是反射? 反射库(Reflection Library)提供了一个非常丰富且精心设计的工具集,以便编写能够动态操纵Java代码的程序.这项功能被大量地应用在JavaBeans中,它是Java组 ...
- 【Java】【反射】
一,java的核心机制 java有两种核心机制:java虚拟机(JavaVirtual Machine)与垃圾收集机制(Garbage collection): Java虚拟机:是运行所有Java程序 ...
随机推荐
- Gitee新视角:代码托管平台如何驱动企业效能革新
Gitee重塑企业级开发:本土代码托管平台的敏捷进化论 在全球化技术竞争日益激烈的当下,企业研发团队正面临前所未有的效率挑战.作为中国领先的代码托管平台,Gitee通过深度本地化与技术创新,正在重新定 ...
- 使用Yolo12算法进行区域内实时目标计数
视频演示 使用Yolo12算法进行区域内实时目标计数 大家好,今天给大家分享一个使用yolo12算法进行区域内目标实时计数的项目. 计数效果 如上图所示,程序会检测画面中的所有行人,紫色的矩形框是 ...
- qemu的外部快照原理
一 基础概念 1 外部快照 当一个快照被创建时,创建时当前的状态保存在当前使用的磁盘文件中,即成为一个backing file.此时一个新的overlay被创建出来保存往后的数据. 2 backing ...
- BOE(京东方)“向新2025”年终媒体智享会首站落地上海 六大维度创新开启产业发展新篇章
12月17日,BOE(京东方)以"向新2025"为主题的年终媒体智享会在上海启动.正值BOE(京东方)新三十年的开局之年,活动全面回顾了2024年BOE(京东方)在各领域所取得的领 ...
- 让AI“上天”“入地” 百度打开未来世界
将大模型和生成式AI送到普通人手里,让大模型触手可得. 从ChatGPT问世至今,已经过去2年.大模型和生成式AI带给人们的,除了无限畅想,还有理想与现实的差距. 即便AI手机.AI PC.AI汽车相 ...
- 更牛的Math(长期更新)
数学 欧拉函数 : \(\phi(p)\) = 所有小于p且与p互质的数的个数 狭义积性: \(φ(ab)=\phi(a)\phi(b) (a,b互质时)\) 积性的证明: 令n = \(\prod ...
- npcapc_2024_d Two Box/【PR #15】黑白球染色
npcapc_2024_d Two Box/[PR #15]黑白球染色 题意 有 \(m\) 个球,一开始全部是白色. 有 \(n\) 次操作,每次操作可以把某个球的颜色反转. 有一个长度为 \(n\ ...
- MySQL查找是否存在
1.使用count() 当需要查询数据是否存在时,一般会使用count函数,统计其个数,用法如下: select count(1) from user where a = 1 在java中判断数量是否 ...
- Spring Boot整合持久层
整合持久层就是和数据库打交道,这里以mysql为例. 1.准备工作 首先创建一个数据库和表,代码如下: create database test1 default character set utf8 ...
- QDialog::show
何志丹 无论是setModel true,还是false. show都是马上返回, show后面的代码执行完之前,本对话框和其他对话框都是无法操作的.