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

本文接上文“老生常谈反射之class类的使用(必看篇)”,以编写一个用来获取类的信息(成员函数、成员变量、构造函数)的工具类来讲解"反射之获取类的信息"

1、获取成员函数信息

/**

* 获取成员函数信息

* @param obj

*/

public static void printclassmethodmessage(object obj){

//获取类的信息 获取类的类类型

class c = obj.getclass();

//获取类的名称

system.out.println("类的名称是:" + c.getname());

/**

* methods类,方法对象

* 一个成员方法就是一个method对象

* getmethods()方法是获取所有public的函数,包括父类继承而来

* getdeclaredmethods()获取的是所有该类自己声明的方法,不问访问权限

*/

// method [] ms = c.getmethods();

method [] ms = c.getdeclaredmethods();

for (method m : ms) {

//得到方法返回值的类类型

class returntype = m.getreturntype();

system.out.print(returntype.getname() + " ");

//得到方法名称

system.out.print(m.getname() + "(");

//获取参数类型(得到的是参数列表的类型的类类型)

class[] paramtypes = m.getparametertypes();

for (class paramtype : paramtypes) {

system.out.print(paramtype.getname()+",");

}

system.out.println(")");

}

}

2、获取成员变量信息

/**

* 获取成员变量信息

* @param obj

*/

public static void printclassfieldmessage(object obj) {

class c = obj.getclass();

/**

* 成员变量也是对象

* field类封装了关于成员变量的操作

* getfields()获取的是所有的public的成员变量信息

* getdeclaredfields()获取的是该类自己声明的成员变量信息

*/

// field [] fs = c.getfields();

field[] fs = c.getdeclaredfields();

for (field f : fs) {

//得到成员变量的类型的类类型

class fieldtype = f.gettype();

string typename = fieldtype.getname();

//得到成员变量的名称

string fieldname = f.getname();

system.out.println(typename+" "+fieldname);

}

}

3、获取构造函数信息

public static void printconmessage(object obj){

class c = obj.getclass();

/**

* 构造函数也是对象

* java.lang.constructor封装了构造函数的信息

* getconstructors()获取所有的public构造函数

* getdeclaredconstructors()获取所有的构造函数

*/

// constructor[] cs = c.getconstructors();

constructor[] cs = c.getdeclaredconstructors();

for (constructor constructor : cs) {

system.out.print(constructor.getname()+"(");

//获取构造函数的参数列表,得到的是参数列表的类类型

class[] paramtypes = constructor.getparametertypes();

for (class paramtype : paramtypes) {

system.out.print(paramtype.getname()+",");

}

system.out.println(")");

}

}

4、工具类代码

package com.format.util;

import java.lang.reflect.constructor;

import java.lang.reflect.field;

import java.lang.reflect.method;

/**

* 打印类的信息,成员函数、成员变量

* created by format on 2017/6/3.

*/

public class classutil {

/**

* 获取成员函数信息

* @param obj

*/

public static void printclassmethodmessage(object obj){

//获取类的信息 获取类的类类型

class c = obj.getclass();

//获取类的名称

system.out.println("类的名称是:" + c.getname());

/**

* methods类,方法对象

* 一个成员方法就是一个method对象

* getmethods()方法是获取所有public的函数,包括父类继承而来

* getdeclaredmethods()获取的是所有该类自己声明的方法,不问访问权限

*/

// method [] ms = c.getmethods();

method [] ms = c.getdeclaredmethods();

for (method m : ms) {

//得到方法返回值的类类型

class returntype = m.getreturntype();

system.out.print(returntype.getname() + " ");

//得到方法名称

system.out.print(m.getname() + "(");

//获取参数类型(得到的是参数列表的类型的类类型)

class[] paramtypes = m.getparametertypes();

for (class paramtype : paramtypes) {

system.out.print(paramtype.getname()+",");

}

system.out.println(")");

}

}

/**

* 获取成员变量信息

* @param obj

*/

public static void printclassfieldmessage(object obj) {

class c = obj.getclass();

/**

* 成员变量也是对象

* field类封装了关于成员变量的操作

* getfields()获取的是所有的public的成员变量信息

* getdeclaredfields()获取的是该类自己声明的成员变量信息

*/

// field [] fs = c.getfields();

field[] fs = c.getdeclaredfields();

for (field f : fs) {

//得到成员变量的类型的类类型

class fieldtype = f.gettype();

string typename = fieldtype.getname();

//得到成员变量的名称

string fieldname = f.getname();

system.out.println(typename+" "+fieldname);

}

}

/**

* 获取构造函数信息

* @param obj

*/

public static void printconmessage(object obj){

class c = obj.getclass();

/**

* 构造函数也是对象

* java.lang.constructor封装了构造函数的信息

* getconstructors()获取所有的public构造函数

* getdeclaredconstructors()获取所有的构造函数

*/

// constructor[] cs = c.getconstructors();

constructor[] cs = c.getdeclaredconstructors();

for (constructor constructor : cs) {

system.out.print(constructor.getname()+"(");

//获取构造函数的参数列表,得到的是参数列表的类类型

class[] paramtypes = constructor.getparametertypes();

for (class paramtype : paramtypes) {

system.out.print(paramtype.getname()+",");

}

system.out.println(")");

}

}

}

以上这篇java反射之获取类的信息方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 刷题笔记

1Two SumEasy2Add Two NumbersMedium3Longest Substring Without Repeating CharactersMedium5Longest Palindromic SubstringMedium141Linked List CycleEasy转载于:https://www.cnblogs.com/Poceer/p/10922646.html

云计算(Cloud Computing) 培训总结

云计算(Cloud Computing) 培训总结 近来,云计算(Cloud Computing)是一种新兴的商业模型,在网络中是一个热度很高的新名词,被炒得很火,自己对新技术的那种…

PHP ThinkPHP学习第一步(搭建及认识ThinkPHP入口文件)

ThinkPHP包下载网址&#xff1a;http://www.thinkphp.cn本人下载3.2版本中的完整版&#xff0c;解压如下取其中的ThinkPHP文件于开发网站的根目录&#xff0c;并建立入口文件index.php入口文件index.php详细内容如下&#xff1a;<?php/** 本文件为thinkPHP的入口文件&#…

java怎么复制别人的数据库_java-如何在不使用Apache DDLUtils的情况下使用JDBC将模式从一个数据库复制到另一个数据库?...

我在MySQL中有一个数据库,我想以编程方式在FileMaker Pro中创建所有相同的表和字段.我可以使用JDBC自己完成此操作,但我希望已经有了可以执行此操作的库.我研究了来自Apache的DDLUtils,但无法弄清楚如何构建它(它在构建系统中使用Maven,尝试构建时会出现致命错误).解决方法:我自…

iptables 基础

SNAT 和 DNAT 是 iptables 中使用 NAT 规则相关的的两个重要概念。如上图所示&#xff0c;如果内网主机访问外网而经过路由时&#xff0c;源 IP 会发生改变&#xff0c;这种变更行为就是 SNAT&#xff1b;反之&#xff0c;当外网的数据经过路由发往内网主机时&#xff0c;数据包…

jqgrid学习(1)

grid_id:表格id options&#xff1a;参数 参数描述默认值gridModel当为ture我们会使用colModel中的属性构造查询条件&#xff0c;所用到的参数&#xff1a;name, index, edittype, editoptions, search.还有一个参数&#xff1a;defval&#xff1a;查询条件的默认值&#xff1b…

Oracle11g远程连接配置 visual studio 2003

服务器端 配置&#xff1a;oracle11g R2 x64 1.设置监听 a.启动栏 -> 开始 -> 程序 -> Oracle-OraDb11g_home1 -> 配置和移植工具 -> Net Manager b.Oracle Net 配置 -> 本地 -> 监听程序 -> LISTENER &#xff0c;查看是否有本地地址在监听&#xff…

JAVA思维导图学习笔记_8张思维导图,55天学习笔记,帮你入门JavaSE

学完了Java中的基础语法&#xff0c;也就是JavaSE。对其做了一个详细的梳理&#xff0c;也便于以后回顾。其中有些知识点被自己遗漏了&#xff0c;比如正则表达式这些&#xff0c;只能以后找机会补上了。01前言对于计算机基础知识的了解、以及Java相关的软件安装。相关笔记02基…

Laravel笔记记录

1.获取当前控制器和action名称 request()->route()->getAction()转载于:https://www.cnblogs.com/fpcing/p/10935867.html

使用MemoryStream和FileStream

使用MemoryStream和FileStream编程访问文件是通过文件流对象进行的&#xff0c;当应用程序需要访问文件时&#xff0c;必须先创建一个文件流对象&#xff0c;此流对象和文件是一一对应关系。在.NET中&#xff0c;使用抽象基类System.IO.Stream代表流&#xff0c;它提供Read和Wr…

java servlet异步_厉害了,Servlet3的异步处理机制

Servlet3发布好几年了&#xff0c;又有多少人知道它的新特性呢&#xff1f;下面简单介绍下。主要增加了以下特性&#xff1a;1、异步处理支持2、可插性支持3、注解支持&#xff0c;零配置&#xff0c;可不用配置web.xml...异步处理是什么鬼&#xff1f;直接操起键盘干。WebServ…

WordPress后台的文章、分类,媒体,页面,评论,链接等所有信息中显示ID并将ID设置为第一列...

WordPress后台默认是不显示文章、分类等信息ID的&#xff0c;查看起来非常不方便,不知道Wp团队出于什么原因默认不显示这个但可以使用Simply Show IDs插件来实现 不使用插件,其他网友的实现&#xff1a; <?php /** *为WordPress后台的文章、分类等显示ID From wpdaxue.com …

进程调试--进程启动VS自动附加

程序启动VS自动附加到进程调试 1、 打开注册表regedit 2、 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\currentversion\image file execution options 3、 新建QQ.exe【需要调试的进程名】 4、 右键修改字符串值 5、 F2修改新生成的默认值----debugger 6、右键debugger…

[转]20年来我得到的20条编程经验

1、解决问题时估算你所需要的时间。Cmon,admit it! 我曾见过一些程序员为了解决一个特殊的问题而连续坐在显示器前面8小时&#xff0c;我会像下一个会成为这样的程序员一样感到内疚。为自己定一个时间表吧&#xff0c;每1小时&#xff0c;30分钟&#xff0c;甚至15分钟。如果在…

Rotate List

Given a list, rotate the list to the right by k places, where k is non-negative. For example:Given 1->2->3->4->5->NULL and k 2,return 4->5->1->2->3->NULL. 注意下k>size的情况&#xff0c;即倒数的k%size个。 代码&#xff1a; c…

C#4.0和VS2010新特性(三)

VS2010之所以那么强大&#xff0c;究其原因是其背后有着强大的C#4.0作为后台支撑。和以往的所有版本相比&#xff0c;C#4.0的动态性大大增强——dynamic就是一个非常明显的例子&#xff1a;&#xff08;一&#xff09;dynamic初探&#xff1a; 以前因为某些特殊原因&#xff0c…

java spark环境配置文件_JAVA, SCALA, HADOOP, SPARK里的JAVA_HOME和环境变量设置

/etc/profile里添加的内容&#xff1a;export JAVA_HOME/jdkexport HADOOP_HOME/hadoopexport SCALA_HOME/scalaexport SPARK_HOME/sparkexport PATH$PATH:$JAVA_HOME/binexport PATH$PATH:$SPARK_HOME/binexport PATH$PATH:$HADOOP_HOME/binexport PATH$PATH:$SCALA_HOME/bine…

#20175201 实验五 网络编程与安全

一、实验五 网络编程与安全-1 1.实验要求&#xff1a; 两人一组结对编程&#xff1a; &#xff08;1&#xff09;参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA &#xff1b; &#xff08;2&#xff09;结对实现中缀表达式转后缀表达式的功能 MyBC.java&#xff1b…

轻轻松松,一键获取3000个外链

轻轻松松&#xff0c;一键获取3000个外链 http://report.loganrockmarketing.com/backlinker/idx.html 打开以上网址&#xff1a; 在方框里输入你要推广的网址&#xff08;不要加前面的http://) 然后点击start/continue backlinking按钮 接下来&#xff0c;坐享其成吧。转载于:…

Scala学习思维导图

转载于:https://blog.51cto.com/thunderkeg/1605365