首页 > 编程语言 > 详细

java 反射机制 方法;构造方法;

时间:2020-06-06 17:05:01      阅读:36      评论:0      收藏:0      [点我收藏+]

如果操作类中的方法;

  Class类中的方法

  Method a=getMethod("方法名",Class...参数类型);

  Method[]=getMethods(); //获取所有的方法(公有的 自己类+父类)

  Method=getDeclaredMethod("方法名字",参数类型的class..);//获取一个方法

  Method[] =getDeclaredMethods();获取全部方法 (公有的 自己类+父类)

 Class类中的构造方法

  Constructor c=getConstructor(Class...参数类型) 

Method类中的常用

  int mm=a.getModifiers();//获取方法的修饰符(权限+特征)

  Class mrt=a.getReturnType();//获取返回值数据类型

  String mn=a.getName();//获取方法的名字

  Class[] mpts=a.getParameterTypes();//获取方法参数列表的类型

  Class[] mets=a.getExceptionTypes();//获取方法抛出异常的类型

  如何操作方法

  调用方法  让他执行一次

  Object r=invoke(对象,执行方法需要传递的所有参数..);

  若方法是私有的,不允许操作

  可以设置setAccessible(true);

Constructor类中的常用方法;  

  getModifiers();//获取方法的修饰符(权限+特征)

  getName();//获取方法的名字

  Class[] =getParameterTypes();//获取方法参数列表的类型

  getExceptionTypes();

  如何操作构造方法

  执行一次 创建对象

  Object=newInstance(执行构造方法时的所有参数);

package test0606;
public class Animal{
	public String names;
	private int ages;
	public void sleep(){
		System.out.println("睡觉");
	}
}
package test0606;
public class Person extends Animal{
	public String name;
	private int age;
	Public Person(){
	}
	public String toString(){
		return "{name:"+name+","+"age:"+age+"}";
	}
	public void eat(){
		System.out.println("无参数吃饭");
	}
	public String eat(String n){
		System.out.println(n+"参数吃饭");
		return n;
	}
	private void drink(){
		System.out.println("参数吃饭");
		
	}
}

 

package test0606;
import java.lang.reflect.*;
@SuppressWarnings("unchecked")
public class TestMain{
	public static void main(String[] args){
		try{
		Class a=Person.class;
		Person p=(Person)a.newInstance();
		//先通过方法名字定位方法 通过方法参数类型对应的Class来找寻
	
		Method m=a.getMethod("eat",String.class);
		String rs=(String)m.invoke(p,"abd");
		System.out.println(rs);	
		Method ma=a.getMethod("sleep");
		ma.invoke(p);
		Method[] ms=a.getMethods();//获取所有公有的方法(自己类+父类);
		Method mma=a.getDeclaredMethod("drink");
		System.out.println(mma.getName());
		mma.setAccessible(true);
		mma.invoke(p);
		/*
		Method m=a.getMethod("eat");
		int mf=m.getModifiers();//获取方法的修饰符
		Class mrt=m.getReturnType();//获取返回值数据类型
		String mn=m.getName();//获取方法的名字
		Class[] mpts=m.getParameterTypes();//获取方法参数列表的类型
		Class[] mets=m.getExceptionTypes();//获取方法抛出异常的类型;
		*/
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}

  

 

  

java 反射机制 方法;构造方法;

原文:https://www.cnblogs.com/canglongdao/p/13055386.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!