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

相关文章

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

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

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

golang 对象池sync.Pool的实现

《golang对象池sync.Pool的实现》:本文主要介绍golang对象池sync.Pool的实现,用于缓存和复用临时对象,以减少内存分配和垃圾回收的压力,下面就来介绍一下,感兴趣的可以了解... 目录sync.Pool的用法原理sync.Pool 的使用示例sync.Pool 的使用场景注意sync.