类的解剖(获取类的定义信息)



获取类的方法:method

 /**获取类中的方法的信息
  * getMethods():获取当前类及其父类声明的public方法
  * getDeclareMethods();获取当前类声明的所有方法,包括private和public
  */
 private static void fetchMethods(String className) throws ClassNotFoundException {
  Class c=Class.forName(className);
  Method methods[]=c.getMethods();
  //Method methods[]=c.getDeclaredMethods();
  for(int i=0;i<methods.length;i++){
   Method m=methods[i];
   System.out.println("name= "+m.getName());//获得方法名
   System.out.println("delaringClass= "+m.getDeclaringClass());//该方法类名
   Class paramTypes[]=m.getParameterTypes();
      for(int j=0;j<paramTypes.length;j++){
       System.out.println("param#"+j+": "+paramTypes[j]);//方法参数数据类型
       }
      Class exception[]=m.getExceptionTypes();
      for(int j=0;j<exception.length;j++){
       System.out.println("exception#"+j+":"+exception[j]);
       
      }
      System.out.println("returnType= "+m.getReturnType());
      System.out.println("-----------------------");
  }
 }



获取类的构造方法:Construct

/**
	 * 获取类中的方法的信息
	 * getConstructors(): 获取当前类的public构造方法
	 * 
	 * getDeclaredConstructors() :获取当前类声明的所有构造方法,包括private等其它非public方法
	 * @throws ClassNotFoundException 
	 */
	private static void fetchConstructors(String className) throws ClassNotFoundException {
		Class c=Class.forName(className);
		Constructor cons[]=c.getConstructors();
		for(int i=0;i<cons.length;i++){
			Constructor con=cons[i];
			System.out.println("name= "+con.getName());
			System.out.println("declaringClass= "+con.getDeclaringClass());
			Class paramTypes[]=con.getParameterTypes();
			for(int j=0;j<paramTypes.length;j++){
				System.out.println("param# "+j+":"+paramTypes[j]);
			}
			Class exception[]=con.getExceptionTypes();
			for(int j=0;j<exception.length;j++){
				System.out.println("exception#"+j+":"+exception[j]);
			}
			System.out.println("--------------");
		}
	}




获取类的属性字段   Field


 /**
    * getFiled()   类对象
    * 
    * 
    */
	private static void fetchFileds(String className) throws ClassNotFoundException {
		Class c = Class.forName(className);
		Field fields[] = c.getDeclaredFields();
		for(int i=0;i<fields.length;i++){
			Field fld = fields[i];
			System.out.println("name= "+ fld.getName());
			System.out.println("delaringClass= "+fld.getDeclaringClass());
			System.out.println("type= "+ fld.getType());
			int mod = fld.getModifiers();//语言修饰符private   static
			//System.out.println("modifiers= "+ mod);
			System.out.println("modifiers= "+ Modifier.toString(mod));
			System.out.println("-----------");
		}
	}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值