`

java反射机制学习(三):通过反射获取实体类的属性、方法、接口和父类信息

    博客分类:
  • Java
阅读更多
使用的实体类Person:
interface China {
	public static final String NATIONL="中国";//国籍
	public static final String NAME="wjl";//姓名
	
	public void getBasicInfo();
	public String setBasicInfo(String userName,String pwd);
}

public class Person implements China{
	private String userName; 
	private String passWord;
	
	//构造方法
	public Person(){}
	public Person(String userName) {
		this.userName = userName;
	}
	public Person(String userName, String passWord) {
		this(userName);//调用一个参数的构造方法
		this.passWord = passWord;
	}
	//父类方法
	public void getBasicInfo() {
		System.out.println("国籍:"+NATIONL+",姓名:"+NAME);
	}
	public String setBasicInfo(String userName, String pwd) {
		return "用户名:"+userName+",密码:"+pwd;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassWord() {
		return passWord;
	}
	public void setPassWord(String passWord) {
		this.passWord = passWord;
	}
}
1、获取接口信息和父类信息
public static void main(String[] args) {
	Class<?> c = null;
	try{
		c = Class.forName("com.wjl.reflect.Person");
		
		//1、获取所有的接口信息
		Class<?> interfaces[] = c.getInterfaces();
		System.out.println("\n接口:");
		for(int j=0;j<interfaces.length;j++){
			System.out.println(interfaces[j].getName());
		}
		
		//2、获取父类信息
		Class<?> parentClass = c.getSuperclass();
		System.out.println("\n父类信息:\n"+parentClass);
		
	}catch(Exception e){
		e.printStackTrace();
	}
}

2、获取属性

public static void main(String[] args) {
	try{
		Class<?> c = Class.forName("com.wjl.reflect.Person");
		Field field[] = c.getDeclaredFields();//获取公用属性
		System.out.println("本类中的属性:");
		for(int i=0;i<field.length;i++){
			System.out.println("系统:"+field[i]);
			System.out.print("自定义:");
			getFieldInfo(field[i]);
		}
		
		//公共属性
		Field fields[] = c.getFields();
		System.out.println("\n公共属性:");
		for(int i=0;i<fields.length;i++){
			System.out.println("系统:"+fields[i]);
			System.out.print("自定义:");
			getFieldInfo(fields[i]);
		}
	}catch(Exception e){
		e.printStackTrace();
	}
}

//该方法用来获取各个属性信息
public static void getFieldInfo(Field field){
	System.out.print(Modifier.toString(field.getModifiers())+" ");//修饰符
	System.out.print(field.getType().getName()+" ");//数据类型
	System.out.print(field.getName());//方法名称
	System.out.println(";");
}

3、获取方法

public static void main(String[] args) {
	Class<?> c = null;
	try{
		c = Class.forName("com.wjl.reflect.Person");
		//1、获取本类中的所有方法
		Method[] methods = c.getDeclaredMethods();
		System.out.println("\n本类中的所有方法:");
		for(int i=0;i<methods.length;i++){
//			System.out.println("系统:"+methods[i]);
			System.out.print("自定义:");
			getMethodInfo(methods[i]);
		}
		
		//2、输出全部方法:本类中的方法+父类中的方法
		Method[] methodes = c.getMethods();
		System.out.println("\n本类和父类的所有方法:");
		for(int i=0;i<methodes.length;i++){
			System.out.println("系统:"+methodes[i]);
			System.out.print("自定义:");
			getMethodInfo(methodes[i]);
		}
	
	}catch(Exception e){
		e.printStackTrace();
	}
}

//获取方法信息
public static void getMethodInfo(Method method){
	System.out.print(Modifier.toString(method.getModifiers())+" ");//修饰符
	System.out.print(method.getReturnType().getName()+" ");//返回值类型
	System.out.print(method.getName());//方法名称
	//各个参数
	Class<?> parames[] = method.getParameterTypes();
	System.out.print("(");
	for(int i=0;i<parames.length;i++){
		System.out.print(parames[i].getName()+" arg"+i);//参数名称
		if(i<parames.length-1){//添加逗号隔开
			System.out.print(",");
		}
	}
	System.out.print(")");
	
	//获取异常信息
	Class<?> ex[] = method.getExceptionTypes();
	if(ex.length>0){//说明有异常
		System.out.print(" throws ");
		for(int j=0;j<ex.length;j++){
			System.out.print(ex[j].getName());
			if(j<ex.length-1) System.out.print(",");
		}
	}
	System.out.println();
}

 

分享到:
评论

相关推荐

    java反射机制.pdf

    Java反射机制允许程序在运行时通过`Reflection APIs`获取类的内部信息,包括修饰符(如`public`、`static`等)、父类(如`Object`)、接口(如`Cloneable`)以及字段和方法的信息,并能够在运行时改变字段的值或调用...

    java学习资料-反射机制深入理解剖析

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。这个特性使得Java具有高度的灵活性和强大的功能,尤其是在开发框架、插件系统以及元数据处理等方面有着广泛的...

    Java 1.5 反射机制

    Java 1.5引入的反射机制是其动态性的一个重要体现,它允许程序在运行时检查和操作类、接口、对象及其方法。反射为开发者提供了强大的能力,可以在不知道具体类名的情况下实例化对象,调用方法,访问字段,以及处理...

    java注解、java反射机制 jdbc 封装

    反射允许程序在运行时检查类、接口、字段和方法的信息,甚至可以动态调用方法和访问字段。在JDBC封装中,反射非常有用,因为它允许在运行时创建和执行SQL语句,而不必在代码中硬编码具体的数据库操作。例如,你可以...

    java反射源码示例+注释详细

    下面是一个简单的示例,展示如何通过反射获取类的属性和方法并进行操作: ```java public class Test { private String name; public void sayHello(String msg) { System.out.println("Hello, " + msg); } ...

    使用annotation获取实体类注释

    6. **注解处理器**:除了在运行时通过反射获取注解信息,还可以使用Java的注解处理工具(Annotation Processing Tool,APT)在编译期间处理注解。这通常用于生成额外的源代码或编译时检查。 7. **注解的实际应用**:...

    java反射以及复制一个bean的值到另一个bean中。

    在Java编程中,反射(Reflection)是一个强大的工具,它允许我们在运行时检查和操作类、接口、字段和方法。通过反射,我们可以动态地创建对象、访问私有成员、调用私有方法,甚至改变对象的行为。Java反射 API 主要...

    详解Java高级特性之反射

    Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。 在日常...

    java 反射动作

    2. **获取类信息**:通过`Class`类的`forName()`方法,可以获取任何已加载类的`Class`对象,从而获取类的元数据,例如类名、父类、接口、构造器、方法和字段等。 3. **创建对象**:使用`Class`对象的`newInstance()...

    java反射之获取类的信息方法(推荐)

    今天,我们将探索如何使用 Java 反射机制来获取类的信息,包括成员函数、成员变量和构造函数信息。 1. 获取成员函数信息 成员函数信息是指类中定义的方法信息。Java 反射机制提供了多种方式来获取成员函数信息。...

    JAVA反射实现数据层框架

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够动态地创建对象和调用方法。在数据层框架的开发中,反射扮演着至关重要的角色,因为它提供了灵活性和动态性,使得...

    Java反射技术栈1

    总结,Java反射技术是其强大之处,它赋予了Java代码在运行时动态操作类和对象的能力。但使用时需谨慎,平衡灵活性和性能,避免过度使用导致代码难以管理和效率下降。在理解其原理和应用场景的基础上,适当使用反射...

    在反射动态机制生成对象的实体

    在Java中,每个类都隐式继承自`java.lang.Class`类,该类提供了获取类的信息以及创建类的实例的方法。`Class`类的主要功能包括: - 获取类名、包名、父类、接口等信息。 - 创建类的实例。 - 获取类中的所有方法和...

    Java SE编程入门教程 java类和对象方法以及包的使用(共56页).pptx

    10. **反射机制**:Java的反射机制允许程序在运行时动态地获取类的信息(如类名、属性和方法),并能调用私有方法或修改私有属性。 11. **Java IO流**:IO流用于读写数据,包括从文件、网络、内存等源读取和写入。...

    java发射demo

    Java发射技术,主要指的是Java反射(Reflection)机制,它是Java编程语言中的一种强大的工具,允许程序在运行时检查和操作类、接口、字段以及方法等信息。反射在Java中扮演着重要的角色,尤其是在动态类型语言的支持...

    Thinking in Java第三版中文版

    16. **反射**:反射机制允许程序在运行时动态获取类的信息并操作类的对象。 17. **注解(Annotation)**:注解是元数据的一种形式,可以为编译器和JVM提供信息,用于代码的自描述。 18. **垃圾回收(Garbage ...

    java se学习教程

    反射API允许在运行时动态地获取类的信息,并能创建和操作类的对象。注解(Annotation)是元数据的一种形式,可以为编译器和JVM提供额外的信息,如用于代码自动生成、运行时检查等。 九、泛型 Java泛型引入了类型...

    java 基础 之反射

    在Java反射中,`java.lang.reflect`包提供了三个核心类:`Constructor`、`Field`和`Method`,分别用于处理类的构造器、字段和方法。我们可以使用`getConstructors()`、`getFields()`和`getMethods()`方法来获取这些...

Global site tag (gtag.js) - Google Analytics