編輯:關於Android編程
在【玩轉SQLite系列】(七)打造輕量級ORM工具類SQLiteDbUtil操作數據庫這篇文章當中,我封裝了一個輕量級的數據庫ORM工具類,其中我們發現,不管是建表、查詢數據、插入數據、都只需要一個簡單的javabean對象,這正是這個輕量級的工具類的強大之處,那麼強大的背後到底是如何通過數據庫中的字段和javabean對象之間去互轉呢?這就牽扯到一個java的基礎只是:java的反射。
package cn.bluemobi.dylan.sqlitelibrary; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static android.R.attr.value; /** * Created by yuandl on 2016-11-21. */a public class JavaReflectUtil { /** * 獲取類的簡名,不包含包名 * * @param c 類 * @return 類名 */ public static String getClassName(Class c) { if (c == null) { return null; } return c.getSimpleName(); } /** * 獲取類的屬性名 * * @param c 類 * @return 所有屬性的數組 */ public static String[] getAttributeNames(Class c) { if (c == null) { return null; } Field[] declaredFields = new Field[0]; try { declaredFields = c.getDeclaredFields(); } catch (SecurityException e) { e.printStackTrace(); } Listnames = new ArrayList<>(); for (int i = 0; i < declaredFields.length; i++) { /**忽略編譯產生的屬性**/ if (declaredFields[i].isSynthetic()) { continue; } /**忽略serialVersionUID**/ if (declaredFields[i].getName().equals("serialVersionUID")) { continue; } names.add(declaredFields[i].getName()); } return names.toArray(new String[names.size()]); } /** * 獲取類的屬性類型 * * @param c 類 * @return 所有屬性類型的數組 */ public static Class[] getAttributeType(Class c) { if (c == null) { return null; } Field[] declaredFields = new Field[0]; try { declaredFields = c.getDeclaredFields(); } catch (SecurityException e) { e.printStackTrace(); } List
我們在遍歷循環一個類中的屬性還是屬性名的時候一定要注意:Android studio2.2之後的Instant Run功能的使用會導致JavaBean對象在編譯之後
多產生兩個屬性。所以,我們在獲取的時候一定要記得忽略。
for (int i = 0; i < declaredFields.length; i++) { /**忽略編譯產生的屬性**/ if (declaredFields[i].isSynthetic()) { continue; } /**忽略serialVersionUID**/ if (declaredFields[i].getName().equals("serialVersionUID")) { continue; } names.add(declaredFields[i].getName()); }
這篇博客主要介紹的是 Android 主流各種機型和各種版本的懸浮窗權限適配,但是由於碎片化的問題,所以在適配方面也無法做到完全的主流機型適配懸浮窗適配懸浮窗適配有兩種方
ATCID主要用來處理PC端傳輸過來的AT命令,從AT命令實際處理的地方來說,主要分為3類: 1. 需要Modem來處理的AT命令; 2. 需
在你手機中,打開文件的方式有這麼幾種:1、通過要打開的這個文件的類型找到對應的應用程序app打開2、通過已知文件類型打開應用程序,找到對應的這個文件打開簡單點說,通過文件
本書也正式的進入尾聲了,在android的世界了,不同的軟件,硬件信息就像一個國家的經濟水平,軍事水平,不同的配置參數,代表著一個android帝國的強弱,