`
phoebird
  • 浏览: 119265 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Javs 反射 之 取得全部方法

    博客分类:
  • J2SE
阅读更多
package com.cn.service;

public interface China {

	public static final String NATIONAL="China";
	
	public static final String AUTHOR="老李";
	
	public void sayChina();
	
	public String sayHello(String name,int age);
}


package com.cn.model;

import com.cn.service.China;

public class Person implements China{

	private String name;
	
	private int age;
	
	public Person(){
		
	}
	
	public Person(String name){
		this.name=name;
	}
	
	public Person(String name,int age){
		this(name);//调用有一个参数的构造函数
		this.setAge(age);
	}
	
	public void sayChina() {
		// TODO Auto-generated method stub
		System.out.println("作者:"+AUTHOR+" ,国籍: "+NATIONAL);
	}

	public String sayHello(String name, int age) {
		// TODO Auto-generated method stub
		return name+",你好!我今年"+age+"岁了";
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	

}


package com.cn.component;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * 获取一个类的全部方法
 * @author Administrator
 *
 */
public class GetMethodDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Class<?> c=null;//申明class对象,泛型
		try{
			c=Class.forName("com.cn.model.Person");//实例化class对象
		}
		catch(ClassNotFoundException e){
			e.printStackTrace();
		}
		Method m[]=c.getMethods();//获取类Person的全部方法
		for(int i=0;i<m.length;i++){
			int mo=m[i].getModifiers();//获取修饰符数字
			String priv=Modifier.toString(mo);//获取修饰符
			System.out.print(priv+"  ");
			Class<?> type=m[i].getReturnType();//获取返回值类型
			System.out.print(type.getName()+"  ");//取得返回类型名称
			
			System.out.print(m[i].getName()+" ");//方法名称
			System.out.print("(");//参数左边括号
			Class<?> pt[]=m[i].getParameterTypes();//获取参数类型
			for(int j=0;j<pt.length;j++){
				System.out.print(pt[j].getName()+" "+"arg"+j);//取得参数类型名称,如:int ,或者String 
				if(j<pt.length-1){
					System.out.print(",");
				}
			}
			Class<?> ex[]=m[i].getExceptionTypes();//获取异常类型
			if(ex.length>0){
				System.out.print(") throws ");
			}
			else{
				System.out.print(" )");
			}
			for(int k=0;k<ex.length;k++){
				System.out.print(ex[k].getName());//输出异常信息名称
				if(k<ex.length-1){
					System.out.print(" ,");
				}
			}
			System.out.println();//换行
		}
		
	}

}
//输出结果,不仅输出person类中的方法,也输出了从Object类中继承的方法
//public  void  setAge (int arg0 )
//public  void  sayChina ( )
//public  java.lang.String  sayHello (java.lang.String arg0,int arg1 )
//public  int  getAge ( )
//public  java.lang.String  getName ( )
//public  void  setName (java.lang.String arg0 )
//public native  int  hashCode ( )
//public final native  java.lang.Class  getClass ( )
//public final  void  wait (long arg0,int arg1) throws java.lang.InterruptedException
//public final  void  wait () throws java.lang.InterruptedException
//public final native  void  wait (long arg0) throws java.lang.InterruptedException
//public  boolean  equals (java.lang.Object arg0 )
//public  java.lang.String  toString ( )
//public final native  void  notify ( )
//public final native  void  notifyAll ( )

 

分享到:
评论

相关推荐

    java反射JAVA REFLECT (java 反射)

    JAVA REFLECT (java 反射) 取得类的继承结构 - 类所在的包; |- public Package getPackage() - 类的声明方式; |-取得全类名:public String getName() |-只取类名: public String getSimpleName() - 类所继承...

    Java反射学习.pdf

    Java 反射是 Java 程序设计语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说 "自审 ",并能直接操作程序的内部属性。Java 反射的能力在实际应用中非常有价值,例如,使用它能获得 Java 类中各成员的...

    java反射机制详解

    7. **获取某个类的全部方法**: ```java Method[] methods = clazz.getMethods(); for (Method method : methods) { System.out.println("方法: " + method); } ``` 8. **通过反射机制调用某个类的方法**: ...

    java反射详解

    Java反射机制的强大之处在于其动态性,即能够在运行时处理类、方法和字段等。然而,过度依赖反射可能会导致代码难以理解和维护,因此应当谨慎使用。通过上述案例,我们已经了解了如何使用Java反射机制来获取和操作类...

    Java中的反射机制

    Java反射机制允许运行中的程序检查自身,并能直接操作程序的内部属性。这是其他许多编程语言(如Pascal、C或C++)不具备的能力。 **1.1 Reflection的工作机制** 为了展示反射如何工作,我们来看一个简单的例子: ...

    java 反射取得类的私有属性,通过私有属性取得属性值

    Java反射API提供了一系列类和接口,如`Class`、`Field`、`Method`等,它们让我们能够在运行时动态地获取类的信息,包括类的结构、方法签名以及字段等。这为编程提供了极大的灵活性,尤其是在处理第三方库或者进行元...

    java反射机制详解与应用.pdf

    Java 反射机制的主要方法包括: * getClass():获取当前对象的 Class 对象。 * Class.forName():获取指定名称的 Class 对象。 * .class 语法:获取指定类别的 Class 对象。 * primitive wrapper classes 的 TYPE ...

    基于Java反射机制的Excel文件导出实现.pdf

    本文首先介绍了Java反射机制的原理和实现方法,然后讨论了基于Java反射机制的Excel文件导出实现的方法。该方法可以实现用户自行选择数据列的Excel导出,提高了导出文件的个性化和易用性。 Java反射机制的主要运用类...

    Java反射技术浅谈.pdf

    Java反射技术广泛应用于各种技术之中,比如在Java Beans中,反射用于实现对Bean属性的动态访问和修改;在Java Servlet和Java Server Page中,反射被用来动态地处理HTTP请求和页面内容。此外,反射技术还能够实现动态...

    JAVA新特性--java反射、映射

    反射本身并不是一个新概念,它可能会使我们联想到光学中的反射概念,尽管计算机科学赋予了反射概念新的含义,但是,从现象上来说,它们确实有某些相通之处,这些有助于我们的理解。在计算机科学领域,反射是指一类...

    Java基础入门四泛型反射注解.pdf

    Java作为云计算环境下编写应用和服务的主要语言之一,其泛型、反射和注解等高级特性为构建云计算平台上的应用提供了便利,从而满足不断变化的业务需求。 学习Java编程,特别是泛型、反射和注解这些高级特性,对于想...

    Java反射技术浅谈 (1).pdf

    Java反射技术浅谈 Java反射技术是一种可以访问、检测和修改程序本身状态或行为的能力。通过反射,Java程序可以加载一个运行时才知道名称的类,得到其完整内部信息,并创建其对象,或对其属性设值,或调用其方法。...

    java反射机制

    这个机制允许程序在运行时透过 Reflection APIs 取得任何一个已知名称的 class 的内部信息,包括其 modifiers(诸如 public, static 等等)、superclass(例如 Object)、实现之 interfaces(例如 Serializable),...

    java根据方法名称取得反射方法的参数类型示例

    在Java编程中,反射机制是Java提供的一种强大的工具,它允许程序在运行时检查和操作对象的内部属性、方法和实现细节。反射方法的参数类型是反射机制中的一个重要概念,通常用于动态调用方法,特别是在处理未知类型的...

    侯捷观点 Java反射机制

    Java反射机制 摘要 Reflection 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时 透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如 public, static ...

    Java基于反射机制实现全部注解获取的方法示例

    Java反射机制可以获取Annotation信息,例如通过反射机制可以获取方法、字段、类上的Annotation。 在Java中,获取Annotation有多种方式,例如通过反射机制、通过AnnotationProcessor等。反射机制是Java中获取...

    Java反射机制 深入浅出

    ### Java反射机制深入浅出 #### 一、什么是反射? 反射是Java中一项非常重要的特性,它允许程序在运行时动态地获取类的信息,并且能够直接操作这些信息。通俗来说,反射就像是为Java对象装上了一面镜子,通过这面...

    Java反射机制

    Java反射机制的强大之处在于它可以提供一种动态地创建对象和调用方法的能力,这对于编写灵活且可扩展性强的应用程序至关重要。 下面将详细介绍Java反射机制的一些关键知识点: 1. **反射的核心类:** - `java....

    Java语言的反射机制.pdf

    Java反射机制允许程序在运行时通过调用Reflection APIs取得任何一个已知名称的Class的内部信息,既包括其修饰符、基类、所实现的接口等,也包括fields和methods的所有信息,并可于运行时改变fields内容或调用methods...

Global site tag (gtag.js) - Google Analytics