Java反射列印類的資訊,包括類的成員函式、成員變數(只獲取成員函式)
測試類1:import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ClassUtil { /** * 列印類的資訊,包括類的成員函式、成員變數(只獲取成員函式) * @param obj 該物件所屬類的資訊 */ public static void printClassMethodMessage(Object obj){ //要獲取類的資訊 首先要獲取類的類型別 Class c = obj.getClass();//傳遞的是哪個子類的物件 c就是該子類的類型別 //獲取類的名稱 System.out.println("類的名稱是:"+c.getName()); /* * Method類,方法物件 * 一個成員方法就是一個Method物件 * getMethods()方法獲取的是所有的public的函式,包括父類繼承而來的 * getDeclaredMethods()獲取的是所有該類自己宣告的方法,不問訪問許可權 */ Method[] ms = c.getMethods();//c.getDeclaredMethods() for(int i = 0; i < ms.length;i++){ //得到方法的返回值型別的類型別 Class returnType = ms[i].getReturnType(); System.out.print(returnType.getName()+" "); //得到方法的名稱 System.out.print(ms[i].getName()+"("); //獲取引數型別--->得到的是引數列表的型別的類型別 Class[] paramTypes = ms[i].getParameterTypes(); for (Class class1 : paramTypes) { System.out.print(class1.getName()+","); } System.out.println(")"); } } /** * 獲取成員變數的資訊 * @param obj */ public static void printFieldMessage(Object obj) { Class c = obj.getClass(); /* * 成員變數也是物件 * java.lang.reflect.Field * Field類封裝了關於成員變數的操作 * getFields()方法獲取的是所有的public的成員變數的資訊 * getDeclaredFields獲取的是該類自己宣告的成員變數的資訊 */ //Field[] fs = c.getFields(); Field[] fs = c.getDeclaredFields(); for (Field field : fs) { //得到成員變數的型別的類型別 Class fieldType = field.getType(); String typeName = fieldType.getName(); //得到成員變數的名稱 String fieldName = field.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 class1 : paramTypes) { System.out.print(class1.getName()+","); } System.out.println(")"); } } }
public class ClassDemo3 {
public static void main(String[] args) {
String s = "hello";
ClassUtil.printClassMethodMessage(s);
Integer n1 = 1;
ClassUtil.printClassMethodMessage(n1);
}
}
測試類2:測試類3:public class ClassDemo4 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ClassUtil.printFieldMessage("hello"); System.out.println("============="); ClassUtil.printFieldMessage(new Integer(1)); } }
public class ClassDemo5 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ClassUtil.printConMessage("hello");
ClassUtil.printConMessage(new Integer(1));
}
}
相關推薦
Java反射列印類的資訊,包括類的成員函式、成員變數(只獲取成員函式)
import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ClassUtil { /** *
1.定義一個人員類Person,包括姓名、編號、性別等資料成員和用於輸入、輸出的成員函式,在此基礎上派生出學生類Student類(增加成績)和教師類Teacher(增加教齡),並實現對學生和教師資訊的
#include <iostream> #include<string.h> using namespace std; class person { private: string name,sex; int number; public: voi
Java 反射封裝JDBC查詢,條件查詢、全部查詢封裝到一個類結果為物件;
//封裝方法package com.huanyuguoji.Test;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.refl
建立一個學生類(Student),包括學號成績,程式設計輸入和顯示學生的資訊。建立一個人類(Person),包含姓名、性別和年齡,並作為學生類的基類
#include<iostream.h> class Person { char name[10]; char sex; int age; public: void input() { cout<<"請輸入姓名:"; cin>
Java原始碼分析——Object類解析,一切類的源頭
Java語言類的起始點源於Object類,其它類都直接或間接繼承Oject類,可以說Object類是一切類的源頭。下面來談下Object類的內部的編碼以及簡單的闡述下其中的native本地的方法。 &nb
C# DataReader反射獲取實體類(model) ,實體類集List
public static T FillModel<T>(IDataReader dr) {
java中包的理解,普通類、抽象類、介面作為方法引數傳值情況,作為返回值的傳遞情況。
一、包的概念 用於存放類檔案,包含原始檔還有.class檔案。通過包的分類管理讓功能相同的類放在一個資料夾裡。作用:為類檔案進行分類管理。 二、包的宣告格式 通常使用公司網址反寫。包名全部採用小寫字母。多層包用.連線。包的宣告必須在有效程式碼的第一行。 導包: impo
Java中 元素的繼承,子類屬性覆蓋父類屬性的例項
子類原始碼: package jason; public class SubDemo extends BaseDemo{ public int a = 7; public void accessOwner(){ System.out.println(a);
java反射機制編寫簡單萬能DAO類
由於在搭建編寫萬能DAO時,已經寫了大量的程式碼 在此只給出部分的測試原始碼 如有需要完整專案或者有任何建議聯絡973639421 package com.oman.bean; public class Person { private int id; privat
通過java反射比較兩個相同實體類屬性值的差異
此方法可以通過傳入兩個實體物件,一個字串陣列(需要進行比較的實體類屬性名稱),返回兩個實體類屬性的差異public class CompareFileds { private static Logger logger = LoggerFactory.getLogger(Com
反射獲取物件中屬性的資訊,包括屬性的特性
/********************************************/ 反射獲取物件的屬性資訊 Type T = obj.GetType();//其中obj為一個類的物
利用java反射機制實現javaweb自動呼叫類的方法
public class BookServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequ
C#中的struct(結構)為值類型,struct類型全接觸
line 輸出 其他 重要 影響 初始化 最大 cat type類 眾所周知,struct類型和class類型非常相似,尤其是在C++中,class可以辦到的事struct幾乎都可以實現。在C#中struc類型依然存在,它的用處相對來說已經顯得越來越不重要,這裏主要講述一下
強類型,弱類型,動態類型,靜態類型
隱式類型轉換 用戶 sting 靜態類 算術 tin and 數據 靜態類型 “C and C++ are considered weakly typed since, due to type-casting, one can interpret a field
PYTHON-DAY6-基本數據類型-元祖類型,字典類型,集合類型-作業
hello lex split python 元祖 pytho 課程 基本數據類型 重復 # 1 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],# 將所有大於 66 的值保存至字典的第一個key中,將小於 66 的值保存至第二個key的
潭州課堂25班:Ph201805201 django框架 第五課 自定義簡單標籤,包含標籤,模型類建立,梳理類建立 (課堂筆記)
自定義標籤同自定義過渡器一樣,要建立檔案,在配置檔案中以APP方法註冊,對方法進註冊,在 html 檔案中引入,.. 由模板傳參 在 在配置檔案中改時區: 由檢視函式傳參 &nbs
day020多繼承,經典類MRO,新式類MRO、C3演算法,super
本節內容 1.python多繼承 2.python經典類的MRO 3.python新式類的MRO,C3演算法 4.super()是什麼 一、python多繼承 ·當出現了x是⼀種y的的時候. 就可以使⽤繼承關係. 即"is-a" 關係. ·在繼承關係中. ⼦類⾃動擁有⽗類中除了私有屬性外的其他所有內容.
微信小程式:登陸獲取使用者資訊,包括維護3rdSession。(Node.js-Koa)
前兩三個月最常見的問題就是登陸模組的問題了。自己也改了好幾次登陸的問題,從普通登陸,一直改到維護3rdSession。(token) 普通登陸:使用者資料包括appid,secret全部暴露在外,相對來說不安全。 上前臺程式碼塊: wxml <button open-typ
建立和呼叫儲存過程:查詢Stu資料庫中某個同學的選修課程的資訊,包括學號,姓名,課程名稱,成績
CREATE PROCEDURE proc_select--建立儲存過程 @Sno char(10) output,--輸入輸出引數 @Sname varchar(20) out,--輸出引數 @Cno char(4) out,--輸出引數 @grade tinyint
PHP讀取APK的包資訊,包括包名,應用名,許可權,LOGO等
【轉】PHP讀取APK的包資訊,包括包名,應用名,許可權,LOGO等 宣告本文轉自: 原文連結:https://www.jb51.net/article/53780.htm; 感謝分享! <?php //-------------------------------