日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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反射之獲取類的信息方法(推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持萬仟網。

希望與廣大網友互動??

點此進行留言吧!

總結

以上是生活随笔為你收集整理的java反射 获取方法_java反射之获取类的信息方法(推荐)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。