多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > android自動創建生成model或者po文件

android自動創建生成model或者po文件

來源:程序員人生   發布時間:2015-03-24 08:27:25 閱讀次數:2438次

在開發進程中發現model或po層的數據只是參數不同,其他都是1樣,而每次編寫的時候一樣的事情需要花費很多的時間去寫或拷貝。雖然有些能夠快速生成,但是還是需要時間,比如Parcelable接口實現的時候需要寫1些東西,現在使用1個對文件編寫的類來自動生成文件相信能減少更多的時間。乃至如果開發的接口夠規范的話還能直接解析接口生成model或po文件。


源碼以下:

import java.io.File; import java.io.FileOutputStream; import java.io.RandomAccessFile; import java.util.Date; /** * 在指定位置生成model或po文件 * * @author xiaoyi * * 2015年3月6日 */ public class CreateMode { /** * 指定文件路徑 */ public static String dirPath = "C:Userschengxuyuan2Desktopmodel"; /** * 指定文件格式 */ public static String byteType = "GBK"; /** * 在指定位置判斷并創建文件和文件夾 * * @param dir * 指定的文件夾 * @param file * 指定的文件 * @return * @throws Exception */ public static void createFile(File dir, File file) throws Exception { try { // 在指定位置判斷并創建文件夾 if (dir.exists()) { System.out.println("model文件夾存在"); } else { System.out.println("model文件夾不存在,創建model"); dir.mkdir();// 不存在則創建 } // 在指定位置判斷并創建文件 if (file.exists()) { System.out.println(file.getName() + "文件存在"); } else { System.out .println(file.getName() + "文件不存在,新建" + file.getName()); file.createNewFile();// 不存在則創建 } } catch (Exception e) { System.out.println(file.getName() + "文件創建失敗!"); e.printStackTrace(); } } /** * 對指定文件中寫入指定內容 * * @param content * 寫入內容 * @param dirPath * 文件路徑 * @param fileName * 文件名稱 * @param byteType * 寫入格式 GBK,UTF⑻... * @return * @throws Exception */ public static boolean writeTxtFile(StringBuilder content, String dirPath, String fileName, String byteType) throws Exception { File dir = new File(dirPath); File file = new File(dir, fileName); createFile(dir, file); RandomAccessFile mm = null; boolean flag = false; FileOutputStream o = null; try { o = new FileOutputStream(file); o.write(content.toString().getBytes(byteType)); o.close(); flag = true; } catch (Exception e) { System.out.println("文件內容寫入失?。?quot;); e.printStackTrace(); } finally { if (mm != null) { mm.close(); } } return flag; } /** * 創建model或po * * @param packageName * 項目包名 比如:com.xy.pocket_book.po * @param remark * 對該po的說明備注 * @param author * 作者 * @param time * 創建時間 * @param otherInfo * 其他說明 * @param className * 類名 * @param impI * 需要實現的接口 Parcelable or Serializable * @param variable * 成員變量 * @return */ private static void createModel(String packageName, String remark, String author, String time, String otherInfo, String className, String impI, String... variable) { StringBuilder builder = new StringBuilder(); // +項目包路徑 builder.append("package ").append(packageName).append("; "); // +援用包 builder.append("import android.os.Parcel; ").append( "import android.os.Parcelable; "); // +po注釋 作者 日期等 builder.append("/** ").append(" * ").append(remark).append(" "); builder.append(" * ").append(" "); builder.append(" * ").append("@author ").append(author).append(" "); builder.append(" * ").append(" "); builder.append(" * ").append(time).append(" "); builder.append(" * ").append(" "); builder.append(" * ").append(otherInfo).append(" "); builder.append(" * ").append(" "); builder.append(" */ ").append(" "); // +類名稱 接口 builder.append("public class ").append(className) .append(" implements ").append(impI).append(" { "); // +變量 for (int i = 0; i < variable.length; i++) { builder.append(" private String ").append(variable[i]) .append("; "); } builder.append(" "); // +空構造 builder.append(" public ").append(className).append("() {} "); // +參數構造 builder.append(" public ").append(className).append("("); for (int i = 0; i < variable.length; i++) { if (i == variable.length - 1) { builder.append("String ").append(variable[i]); } else { builder.append("String ").append(variable[i]).append(","); } } builder.append(") { "); builder.append(" super(); "); for (int i = 0; i < variable.length; i++) { builder.append(" this.").append(variable[i]).append(" = ") .append(variable[i]).append("; "); } builder.append(" } "); // +toString builder.append(" @Override "); builder.append(" public String toString() { "); builder.append(" return "").append(className).append(" ["); for (int i = 0; i < variable.length; i++) { if (i == variable.length - 1) { // name=" + name + " builder.append(variable[i]).append("=" + ") .append(variable[i]).append(" + ""); } else if (i == 0) { // name=" + name + ", builder.append(variable[i]).append("=" + ") .append(variable[i]).append(" + ","); } else { builder.append(" ").append(variable[i]).append("=" + ") .append(variable[i]).append(" + ","); } } builder.append("]"; "); builder.append(" } "); // +get for (int i = 0; i < variable.length; i++) { String str1 = variable[i].substring(0, 1); String str2 = variable[i].substring(1, variable[i].length()); builder.append(" public String get").append(str1.toUpperCase()) .append(str2).append("() { "); builder.append(" return ").append(variable[i]).append("; "); builder.append(" } "); } // +set for (int i = 0; i < variable.length; i++) { String str1 = variable[i].substring(0, 1); String str2 = variable[i].substring(1, variable[i].length()); builder.append(" public void set").append(str1.toUpperCase()) .append(str2).append("(String ").append(variable[i]) .append(") { "); builder.append(" this.").append(variable[i]).append(" = ") .append(variable[i]).append("; "); builder.append(" } "); } // 如果使用Parcelable接口 添加兩個方法1個實現 if (impI.equals("Parcelable")) { // 第1個方法 builder.append(" @Override "); builder.append(" public int describeContents() { "); builder.append(" return 0; "); builder.append(" } "); // 第2個方法 builder.append(" @Override "); builder.append(" public void writeToParcel(Parcel dest, int flags) { "); for (int i = 0; i < variable.length; i++) { builder.append(" dest.writeString(").append(variable[i]) .append("); "); } builder.append(" } "); // 第3個實現 builder.append(" private static final Parcelable.Creator<") .append(className).append("> CREATOR = new Creator<") .append(className).append(">() { "); builder.append(" @Override "); builder.append(" public ").append(className) .append("[] newArray(int size) { "); builder.append(" return new ").append(className) .append("[size]; "); builder.append(" } "); builder.append(" @Override "); builder.append(" public ").append(className) .append(" createFromParcel(Parcel source) { "); builder.append(" ").append(className) .append(" mSource = new ").append(className) .append("(); "); for (int i = 0; i < variable.length; i++) { builder.append(" mSource.").append(variable[i]) .append(" = source.readString(); "); } builder.append(" return mSource; "); builder.append(" } "); builder.append(" }; "); builder.append("};"); } // 寫入文件 try { writeTxtFile(builder, dirPath, className + ".java", byteType); System.out.println("文件寫入成功!"); } catch (Exception e) { System.out.println("文件寫入失??!"); e.printStackTrace(); } } public static void main(String[] args) { // 創建model或po測試 createModel("com.xy.pocket_book.po", "測試備注", "xiaoyi", new Date().toLocaleString(), "其他信息備注", "BillPo", "Parcelable", "id", "title", "parent_id", "other", "info", "remark"); } }


自動生成的源碼:

package com.xy.pocket_book.po; import android.os.Parcel; import android.os.Parcelable; /** * 測試備注 * * @author xiaoyi * * 2015⑶⑹ 9:44:30 * * 其他信息備注 * */ public class BillPo implements Parcelable { private String id; private String title; private String parent_id; private String other; private String info; private String remark; public BillPo() {} public BillPo(String id,String title,String parent_id,String other,String info,String remark) { super(); this.id = id; this.title = title; this.parent_id = parent_id; this.other = other; this.info = info; this.remark = remark; } @Override public String toString() { return "BillPo [id=" + id + ", title=" + title + ", parent_id=" + parent_id + ", other=" + other + ", info=" + info + ",remark=" + remark + "]"; } public String getId() { return id; } public String getTitle() { return title; } public String getParent_id() { return parent_id; } public String getOther() { return other; } public String getInfo() { return info; } public String getRemark() { return remark; } public void setId(String id) { this.id = id; } public void setTitle(String title) { this.title = title; } public void setParent_id(String parent_id) { this.parent_id = parent_id; } public void setOther(String other) { this.other = other; } public void setInfo(String info) { this.info = info; } public void setRemark(String remark) { this.remark = remark; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(id); dest.writeString(title); dest.writeString(parent_id); dest.writeString(other); dest.writeString(info); dest.writeString(remark); } private static final Parcelable.Creator<BillPo> CREATOR = new Creator<BillPo>() { @Override public BillPo[] newArray(int size) { return new BillPo[size]; } @Override public BillPo createFromParcel(Parcel source) { BillPo mSource = new BillPo(); mSource.id = source.readString(); mSource.title = source.readString(); mSource.parent_id = source.readString(); mSource.other = source.readString(); mSource.info = source.readString(); mSource.remark = source.readString(); return mSource; } }; };



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久亚 | 欧美高清一级啪啪毛片 | 人成免费a级毛片 | 亚洲欧美日韩精品久久亚洲区色播 | 亚洲大胆视频 | 欧美综合成人网 | 91免费福利视频 | 亚洲欧洲久久久精品 | 波多野结衣在线播放视频 | 黄色片网站在线播放 | 波多野结衣中文字幕在线播放 | 最近免费字幕中文大全视频 | 日本免费第一区二区三区 | 免费a网站 | 欧美成人在线观看 | 自拍偷拍图 | 图片综合区| 欧美日韩国产色综合一二三四 | 那一个欧美一级毛片 | 一级毛片一级毛片免费毛片 | 亚洲影院手机版777点击进入影院 | 色综合久久综合欧美综合图片 | 伊人网站在线观看 | 亚洲成a人一区二区三区 | 1区1区3区4区产品亚洲 | 亚洲日韩第一页 | 高清在线亚洲精品国产二区 | 亚洲欧洲日本天天堂在线观看 | 日本资源在线 | 99久久精品费精品国产一区二 | 99精品国产在这里白浆 | 看毛片的网站 | 亚洲欧美日韩综合二区三区 | 一级片欧美 | 无遮挡免费视频 | 日韩欧美日本 | 亚洲精品一二三区-久久 | www.爱操| 亚洲在线中文 | 亚洲我射 | 亚洲欧洲日产国码二区首页 |