Class类实例化对象取得类的结构

2024-09-02 05:08

本文主要是介绍Class类实例化对象取得类的结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过一个demo熟悉class类的用法。

1.Person3.java

包含一个China接口和Person3类,一些简单方法

package com.yyj.Class;interface China{	// 定义China接口public static final String NATIONAL = "China" ;	// 定义全局常量public static final String AUTHOR = "yyj" ;	// 定义全局常量public void sayChina() ;		// 无参的,没有返回值的方法public String sayHello(String name,int age) ;	// 定义有两个参数的方法,并返回内容
}public class Person3 implements China{private String name ;private int age ;public Person3(){	// 无参构造}public Person3(String name){this.name = name ;	// 设置name属性}public Person3(String name,int age){this(name) ;this.age = age ;}public void sayChina(){	// 覆写方法System.out.println("作者:" + AUTHOR + ",国籍:" + NATIONAL) ;}public String sayHello(String name,int age){return "我是" +name + ",我今年" + age + "岁了!" ;}public void setName(String name){this.name = name ;}public void setAge(int age){this.age = age ;}public String getName(){return this.name ;}public int getAge(){return this.age ;}
};

2.getAllAboutClass.java

(1)使用Class类进行Person3类的实例化和per对象的实例化,调用基本方法

(2)取得Person3类的结构:构造方法、属性、接口、父类、全部方法。

package com.yyj.Class;import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;public class getAllAboutClass {public static void main(String args[]) {Class<?> c = null;// 声明class对象try {c = Class.forName("com.yyj.Class.Person3");// 实例化class对象为person3类} catch (ClassNotFoundException e) {e.printStackTrace();}Person3 per=null;try {per=(Person3)c.newInstance();//person3对象的实例化} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}per.sayChina();per.setName("yyj");per.setAge(23);System.out.println(per.sayHello("yyj",23));// -----输出person3类中全部构造方法:访问权限修饰符+返回值类型+方法名+参数Constructor<?> con[] = c.getConstructors();// 取得类中全部构造方法System.out.println("person类中全部构造方法:");for (int i = 0; i < con.length; i++) {int mo = con[i].getModifiers(); // 取得第i个构造方法的访问权限修饰符System.out.print(Modifier.toString(mo) + " ");// 得到修饰符名并打印System.out.print(con[i].getName() + " ");// 得到方法名并打印Class<?> param[] = con[i].getParameterTypes();System.out.print("(");for (int j = 0; j < param.length; j++) {System.out.print(param[j].getName() + " args" + j);if (j < param.length - 1) {System.out.print(",");}}System.out.println(")");}// -----person3类公共属性:修饰符+类型+属性名称System.out.println("公共属性:");Field f[] = c.getFields();// 取得公共属性for (int i = 0; i < f.length; i++) {int mo = f[i].getModifiers();// 取得属性修饰符(数字)System.out.print(Modifier.toString(mo) + " ");// 还原修饰符Class<?> t = f[i].getType();// 取得属性类型System.out.print(t.getName() + " ");// 输出属性类型名称System.out.println(f[i].getName());// 输出属性名称}// -----本类属性:修饰符+类型+属性名称System.out.println("本类属性:");Field df[] = c.getDeclaredFields();// 取得本类属性for (int i = 0; i < df.length; i++) {int mo = df[i].getModifiers();// 取得属性修饰符(数字)System.out.print(Modifier.toString(mo) + " ");// 还原修饰符Class<?> t = df[i].getType();// 取得属性类型System.out.print(t.getName() + " ");// 输出属性类型名称System.out.println(df[i].getName());// 输出属性名称}// -----person3类实现的接口System.out.println("person3类实现的接口:");Class<?> inter[] = c.getInterfaces();for (int i = 0; i < inter.length; i++) {System.out.println(inter[i].getName());}// -----person3类继承的父类System.out.println("person3类继承的父类:");Class<?> fa = c.getSuperclass();System.out.println(fa.getName());// -----person3类全部方法System.out.println("person3类全部方法:");Method m[] = c.getMethods(); // 取得全部方法for (int i = 0; i < m.length; i++) {Class<?> r = m[i].getReturnType(); // 得到返回值类型Class<?> p[] = m[i].getParameterTypes(); // 取得全部参数的类型int xx = m[i].getModifiers(); // 得到修饰符System.out.print(Modifier.toString(xx) + " "); // 输出修饰符System.out.print(r + " ");System.out.print(m[i].getName());System.out.print("(");for (int j = 0; j < p.length; j++) {System.out.print(p[j].getName() + " " + "arg" + j);if (j < p.length - 1) {System.out.print(",");}}Class<?> ex[] = m[i].getExceptionTypes(); // 取出异常if (ex.length > 0) {System.out.print(") throws ");} else {System.out.print(")");}for (int j = 0; j < ex.length; j++) {System.out.print(ex[j].getName());if (j < p.length - 1) {System.out.print(",");}}System.out.println();}}
}

这篇关于Class类实例化对象取得类的结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129078

相关文章

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部