寫的一個簡單的工具類,可以做物件型別的判斷和迭代出一個物件所有屬性的值
import java.lang.reflect.Field; /** * @author songzheng */ public class TypeUtil { /** * 得到某個物件型別物件 */ public static Class<?> getClass(Object obj) { if (obj instanceof Integer) { return Integer.TYPE; } else if (obj instanceof Boolean) { return Boolean.TYPE; } else if (obj instanceof Long) { return Long.TYPE; } else if (obj instanceof Short) { return Short.TYPE; } else if (obj instanceof Double) { return Double.TYPE; } else if (obj instanceof Float) { return Float.TYPE; } else if (obj instanceof Character) { return Character.TYPE; } else if (obj instanceof Byte) { return Byte.TYPE; } return obj.getClass(); } /** * 判斷某個物件是否為裝箱的基本型別物件或基本型別 */ public static boolean isBasicType(Object obj) { final String[] types = {"int", "char", "boolean","long", "double", "float", "byte", "short"}; String clazzName = getClass(obj).getName(); int j = 0; for (int i = 0; i < types.length; i++) { if (clazzName.equals(types[i])) { break; } j++; } if (j <= 7) { return true; } else { return false; } } /** * 判斷某物件是否為字串 */ public static boolean isString(Object obj) { return obj instanceof String; } /** * 迭代出一個物件的全部基本屬性 */ public static void recurse(Field[] fs, Object obj, List<Object> list) throws IllegalArgumentException, IllegalAccessException { for (int i = 0; i < fs.length; i++) { int j = 0; Field f = fs[i]; f.setAccessible(true); Object v = f.get(obj); if (isBasicType(v)) { j++; list.add(v); } if (isString(v)) { j++; list.add(v); } if (j == fs.length) continue; if (!(isBasicType(v) || isString(v))) { recurse(v.getClass().getFields(), v, list); } } } public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException { List<Object> list = new ArrayList<Object>(); Name n = new Name("sz", "yy", new Address("aa", "bb")); Person p = new Person(11, n); recurse(p.getClass().getDeclaredFields() ,p, list); System.out.println(list); } } class Person { private int age; private Name name; public Person(int age, Name name) { this.age = age; this.name = name; } } class Name { public Name(String first, String second, Address address) { this.first = first; this.second = second; this.address = address; } public String first; public String second; public Address address; } class Address { public Address(String age, String name) { this.age = age; this.name = name; } public String age; private String name; }
相關推薦
寫的一個簡單的工具類,可以做物件型別的判斷和迭代出一個物件所有屬性的值
import java.lang.reflect.Field; /** * @author songzheng */ public class TypeUtil { /** * 得到某個物件型別物件 */ public static Cl
分治:分治和動態規劃的區別,二分檢索遞迴和迭代方式實現
分治法 分治一般可以直接使用遞迴實現,在不考慮空間消費的情況下和迭代方式時間消耗相差不多 ================================================================== 分治一般形式: T(n) = k*T(n/m) + f(
Lua,JavaScript的閉包和迭代器筆記
在JS中一直不太理解閉包這個概念 ,有幸在學習lua程式設計中重新理解了下閉包和迭代器 這個是書上的原文: 迭代器是一種支援指標型別的結構,它可以遍歷集合的每一個元素。在 Lua 中我們 常常使用
微服務應用大行其道,我提供一個dto和entity轉換工具類,方便大家做轉換,少寫機械程式碼,多陪陪家人
微服務應用大行其道,我提供一個dto和entity轉換工具類,方便大家做轉換,少寫機械程式碼,多陪陪家人。 該工具類主要是對do
做一個簡單的銀行、賬戶演示程式。 (1)定義一個賬戶類,包含使用者名稱、密碼、餘額等屬性、存錢、取錢等方法。 (2)定義一個銀行類,包含銀行名、賬戶列表等屬性,開賬戶、查賬戶的功能。賬戶列表可以使用集
做一個簡單的銀行、賬戶演示程式。 (1)定義一個賬戶類,包含使用者名稱、密碼、餘額等屬性、存錢、取錢等方法。 (2)定義一個銀行類,包含銀行名、賬戶列表等屬性,開賬戶、查賬戶的功能。賬戶列表可以使用
Android Studio中寫了一個工具類,進行測試時在Manifest.xml中寫
這是包,utils下的HttpUtils是工具類 在Manifest.xml檔案下寫<instrumentation時報錯,<instrumentation></instrumentation>部分程式碼如下:<instrumentati
一個簡單IP防刷工具類, 10分鐘內只最多允許1000次使用者操作
IP防刷,也就是在短時間內有大量相同ip的請求,可能是惡意的,也可能是超出業務範圍的。總之,我們需要杜絕短時間內大量請求的問題,怎麼處理? 其實這個問題,真的是太常見和太簡單了,但是真正來做的時候,可能就不一定很簡單了哦。 我這裡給一個解決方案,以供參考! 主要思路或者需要考慮的問題為:
一個很簡單的工具類,實體bean轉換成map
簡單的實體類: package cn.ibm.com.mytest; public class Human { private Integer hid; private String hname; public Integer getHid
C#.NET 程序員的福利,自己寫的一個XML操作類,可實現像jquery一樣方便的xml操作,且不用專門去處理命名空間。
console region ignorecas node 處理 命名空間 void clone 一個 此工具是進入一家新公司之後實現的,主要是工作當中操作 xml 的時間太多,因為公司按任務計“工作量”,領導給我安排的時間遠遠不夠完善此工具【悲哀的
寫一個班級的類, 儲存班裡人數,統計班級裡各學科的總分的最高分、各學科的平均分; 寫班級裡的學生類,儲存學生所有成績, 計算某個學生的全部課程的平均分、全部課程的總分、全部課程的最高分
#班級類 class Class_NO(object): def __init__(self,name): self.grade_class_name=name self.students=[] def set_grade_class_n
一個大牛寫的JDBC工具類
事情過去好久了...大概三年前 記著那個時候,此大牛(IBM某架構),在UE下一氣呵成,沒有任何多餘程式碼,甚至不用註釋都可以看得明白此段程式碼用途,現在仔細看了,雖然很基本,但是仍舊覺著此段程式碼很爽!貼出來,讓大家有時間的話,都大致看一下... package com.
在實際業務中用一個簡單泛型,以及父子類的轉換
這幾天回去看了下之前的專案原始碼,發現極為粗製濫造,CRUD成了習慣後,技術很容易停滯不前,大部分時間用在了CV上,程式碼複製過來就用,也不加一改動、抽象、封裝下。 這裡舉一個小例子。 有三個業務功能,材料計劃,材料申請,採購計劃。都有工作流參與,需要記錄每一步中材料的數量和變化。共有屬性:材料名稱,材料
[Android開發] Json解析工具類,一個類搞定Json的解析
一、簡介 利用遞迴的方式反射解析到bean裡面 二、詳細程式碼 1、 Json格式 例如伺服器指定規定json格式為: { "code": "……" , // 返回代號,預留欄位,預設返回null "type":"ER
使用POI做的一個生成Excel的工具類。包含了匯出Excel和解析Excel方法
PoiExcelUtils.java /** * */ package com.common.office; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStrea
設計一個getMin功能的棧,如果面試官讓你寫一個數組類,一定不要用指標去管理new出來原生的陣列,那就是在給自己挖坑
//設計實現一個getMin功能的棧 #include <iostream> #include <stack> using namespace std; class GetMinStack { public: void push(int x)
JSON工具類,物件轉JSON
基於每次都要寫類似這樣:JSONArray arr = new JSONArray(); Iterator<Campus> it = list.iterator(); while (it.hasNext()) { Campus campus = (Campus)
Java的Excel檔案操作工具類,包括讀、寫、合併等功能
一、直接上程式碼: package com.cycares.crm.utils.ExcelUtil; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputS
一個Java Jenkins工具類,支援建立,構建,帶引數構建,刪除JenkinsJob,停止Jenkins Job任務等
Jenkins是一個很強大的持續整合的工具,除了在Jenkins的頁面上我們可以去構建我們的job,我們也可以通過java程式碼來通過呼叫jenkins的api來做一些事情,使得我們的java web專案更加便捷,下面是我的一個工具類。 package com.vip.w
一個Android下ping的簡單工具類
這是一個自己寫的Android下的ping的簡單工具類,主要是通過ping獲取到返回字串之後擷取資訊得到自己想要的資料。不多說,上原始碼 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream
華仔-技術部落格(《面向物件葵花寶典》,寫程式碼的架構師,做技術的管理者)
面向物件葵花寶典 面向物件葵花寶典,主要從理論、實踐、技巧3個方面獨樹一幟的闡述了面向物件相關的知識和技能。教你如何從需求開始,一步一步、環環相扣的走到編碼階段,理論闡述別具一格,實戰技巧簡單好用,是面向物件快速入門和提升的”葵花