ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

java 输出 lambda 生成的类

2026/9/16 2:14:51 拓冰建站 浏览量
java 输出 lambda 生成的类

文章目录


  • 启动添加参数 -Djdk.internal.lambda.dumpProxyClasses 就会在运行源码目录输出 class 文件
/*** <p>Copyright &copy; qww 版权所有。</p>*/
package manageSystemOfStudentInfo;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;/*** <b>Application name:</b>qww 维护<br>* <b>Application describing:</b> <br>* <b>Copyright:</b>Copyright &copy; qww 版权所有。<br>* <b>Company:</b>qww<br>* <b>Date:</b>2016年7月25日,下午5:34:07<br>* * @author qww* @version $Revision$*/
public class ManageXMLFile {/**************** 下面是一些方法 ****************//*** * {获取XML文件中ID的最大值}* * @param url* @return* @author: qww*/public static int getMaxId(String url) {int max = 0;Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();for (Element e : list) {int id = Integer.parseInt(e.attributeValue("id"));if (id > max) {max = id;}} // end foreach()return max;}// end getMaxId() method/*** * {查询输入的用户名密码在数据库中书否存在,并验证是否对应}* * @param url* @return* @author: qww*/public static boolean queryAccount(String url, String username,String password) {boolean b = false;Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();for (Element element : list) {if (String.valueOf(username).equals(element.attributeValue("username"))&& String.valueOf(password).equals(element.attributeValue("password"))) {b = true;}// end if}// end foreach loop listreturn b;}// end queryAccount(String url) method/*** * {获取Document对象}* * @param url* @return* @author: qww*/public static Document getDocument(String url) {SAXReader reader = new SAXReader();Document dom = null;try {dom = reader.read(new File(url));} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}return dom;}// end getDocument()方法/*** * {写入XML文件,目的地是 url}* * @param url* @param dom* @throws IOException* @author: qww*/public static void writerXML(String url, Document dom) throws IOException {OutputFormat format = OutputFormat.createCompactFormat();format.setIndent("	");format.setNewlines(true);format.setEncoding("gbk");XMLWriter xml = new XMLWriter(new FileOutputStream(url), format);xml.write(dom);}// end writerXML() method/*** * {创建一个只含有根节点<person>的XML文件,目的地url}* * @param url* @param rootElement* @author: qww*/public static void creatNullXmlFile(String url, String rootElement) {Document dom = DocumentHelper.createDocument();Element person = dom.addElement(rootElement);dom.setRootElement(person);try {writerXML(url, dom);} catch (IOException e) {e.printStackTrace();System.out.println("“创建空XML文件方法”中的异常");}}// end creatNullXmlFile(String url) method/*** * {重载的方法,向源路径为url的XML文件中添加 用户注册 的数据}* * @param url* @param st* @author: qww*/public static void add(String url, String account[]) {Document dom = getDocument(url);Element person = dom.getRootElement();Element act = person.addElement("account");act.addAttribute("username", account[0]);act.addAttribute("password", account[1]);// 写入文件try {writerXML(url, dom);} catch (IOException e) {e.printStackTrace();}}// end add(String url, Student stu) method/*** * {向源路径为url的XML文件中添加 Student 类的数据}* * @param url* @param st* @author: qww*/public static void add(String url, Student st) {Document dom = getDocument(url);Element person = dom.getRootElement();Element stu = person.addElement("student");stu.addAttribute("id", String.valueOf(getMaxId(url) + 1));/*********** 添加子节点 *********************/Element name = stu.addElement("name");name.setText(st.getName());Element sex = stu.addElement("sex");sex.setText(st.getSex());Element address = stu.addElement("address");address.setText(st.getAddress());Element age = stu.addElement("age");age.setText(String.valueOf(st.getAge()));Element grade = stu.addElement("grade");grade.setText(st.getGrade());Element email = stu.addElement("email");email.setText(st.getEmail());Element phone = stu.addElement("phone");phone.setText(st.getPhone());Element school = stu.addElement("school");school.setText(st.getSchool());/*********** 添加子节点 结束 *********************/// 写入文件try {writerXML(url, dom);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// end add(String url, Student stu) method/*** * {向源路径为url的XML文件中添加 Student 类的数据;重载的add方法,用于自己添加ID}* * @param url* @param st* @author: qww*/public static void add(String url, Student st, int id) {Document dom = getDocument(url);Element person = dom.getRootElement();/*********** 添加子节点 *********************/Element stu = person.addElement("student");stu.addAttribute("id", String.valueOf(id));Element name = stu.addElement("name");name.setText(st.getName());Element address = stu.addElement("address");address.setText(st.getAddress());Element grade = stu.addElement("grade");grade.setText(st.getGrade());Element sex = stu.addElement("sex");sex.setText(st.getSex());Element school = stu.addElement("school");school.setText(st.getSchool());Element email = stu.addElement("email");email.setText(st.getEmail());Element phone = stu.addElement("phone");phone.setText(st.getPhone());Element age = stu.addElement("age");age.setText(String.valueOf(st.getAge()));/*********** 添加子节点 结束 *********************/// 写入文件try {writerXML(url, dom);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// end add(String url, Student stu) method/*** * {从源路径为url的XML文件中,根据学生ID删除相应学生信息}* * @param url* @param id* @author: qww*/public static int del(String url, int id) {int flag = 0;// 这是一个删除成功与否的标志Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();for (Element element : list) {if (String.valueOf(id).equals(element.attributeValue("id"))) {person.remove(element);flag++;}}// end foreach()try {if (1 == flag) {System.out.println("确认删除ID=" + id + "的学生信息(y或Y确认,其他取消删除操作)");Scanner sc = new Scanner(System.in);if (sc.next().equalsIgnoreCase("Y")) {writerXML(url, dom);flag++;}// end}// end if(1==flag)} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}// end catch (IOException e)if (2 == flag) {System.out.println("删除ID=" + id + "的学生信息成功……");} else if (1 == flag) {System.out.println("取消删除操作……");} else {System.out.println("没有ID=" + id + "的学生,  无法完成删除操作……");}// end else{}return flag;}// end del(String url,int id) method/*** * {从控制台<修改>学生信息}* * @param s* @return* @author: qww*/public static Students inputStud(Students s) {Students stu = s;Scanner sc = new Scanner(System.in);// while (true) {// System.out.println("ID=" + s.getId() + "学生的 Name 属性修改前的值为:"// + s.getName() + "\n请输入新值:");// 1// String str3 = sc.next();// if (ManageStudentInfo.regex("[\\u4e00-\\u9fa5]+", str3)) {// stu.setName(str3);// break;// } else {// System.out.println("您输入有误,只能输入中文!");// }// } // end while(true) loop name// while (true) {// System.out.println("ID=" + s.getId() + "学生的 Sex 属性修改前的值为:"// + s.getSex() + "\n请输入新值, 只能输入'男'或'女':");// 2// String str3 = sc.next();// if (str3.equals("男") || str3.equals("女")) {// stu.setSex(str3);// break;// } else {// System.out.println("输入有误,只能输入'男'或'女'!");// }// } // end while(true) loop sexSystem.out.println("ID=" + s.getId() + "学生的 Address 属性修改前的值为:"+ s.getAddress() + "\n请输入新值:");// 3stu.setAddress(sc.next());while (true) {System.out.println("ID=" + s.getId() + "学生的 Age 属性修改前的值为:"+ s.getAge() + "\n请输入新值:");// 4String str3 = sc.next();if (ManageStudentInfo.regex("^([8-9]|((1|2|3|4)[0-9])|50)*", str3)) {stu.setAge(Integer.parseInt(str3));break;} else {System.out.println("年龄太大或太小,请输入8-50");}} // end while(true) loop agewhile (true) {System.out.println("ID=" + s.getId() + "学生的 Grade 属性修改前的值为:"+ s.getGrade() + "\n请输入新值(只能输入'初级'、'中级'、'高级'):");// 5String str3 = sc.next();if (str3.equals("初级") || str3.equals("中级") || str3.equals("高级")) {stu.setGrade(str3);break;} else {System.out.println("输入错误,请重新输入。只能输入'初级'、'中级'、'高级':");}} // end while(true) loop gradeSystem.out.println("ID=" + s.getId() + "学生的 Email 属性修改前的值为:"+ s.getEmail() + "\n请输入新值: ");// 6stu.setEmail(sc.next());while (true) {System.out.println("ID=" + s.getId() + "学生的 Phone 属性修改前的值为:"+ s.getPhone() + "\n请输入新值: ");// 7String str3 = sc.next();if (ManageStudentInfo.regex("^[1][358]\\d{9}$", str3)) {stu.setPhone(str3);break;} else {System.out.println("请输入 有效的11位电话号码");}} // end while(true) loop phoneSystem.out.println("ID=" + s.getId() + "学生的 School 属性修改前的值为:"+ s.getSchool() + "\n请输入新值: ");;// 8stu.setSchool(sc.next());return stu;}// end inputStud(Students s) method/*** * {根据学生ID修改学生信息}* * @param url* @param st* @author: qww*/public static void edit(String url, Students st) {int flag = 0;try {Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();for (Element element : list) {if (String.valueOf(st.getId()).equals(element.attributeValue("id"))) {flag++;/*****************************/st = inputStud(st);/*****************************//** element.element("name").setText(st.getName());* element.element("sex").setText(st.getSex());*/element.element("address").setText(st.getAddress());element.element("grade").setText(st.getGrade());element.element("school").setText(st.getSchool());element.element("email").setText(st.getEmail());element.element("phone").setText(st.getPhone());element.element("age").setText(String.valueOf(st.getAge()));writerXML(url, dom);flag++;}// end if()}// end foreach() loop} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}// end catch (IOException e)if (2 == flag)System.out.println("修改ID=" + st.getId() + "的学生信息成功……");else if (flag == 0)System.out.println("ID=" + st.getId() + "不存在");}// end edit(String url, Student st) method/*** * {重载的edit方法,根据ID修改部分学生部分信息}* * @param url* @param st* @param attribute* @author: qww*/public static void edit(String url, Student st, String attribute) {int flag = 0;try {Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();for (Element element : list) {if (String.valueOf(st.getId()).equals(element.attributeValue("id"))) {flag++;if (attribute.equals("age")) {// age是int型的——独立出来Scanner sc = new Scanner(System.in);while (true) {System.out.println("ID=" + st.getId() + "学生的"+ attribute + "属性,修改前的值为:"+ element.elementText(attribute)+ "\n请输入新值:");// 4String str3 = sc.next();if (ManageStudentInfo.regex("^([8-9]|((1|2|3|4)[0-9])|50)*", str3)) {element.element("age").setText(str3);break;} else {System.out.println("年龄太大或太小,请输入8-50");}} // end while(true) loop age} else {// _——————Scanner sc = new Scanner(System.in);if (attribute.equals("phone")) {while (true) {System.out.println("ID=" + st.getId()+ "学生的 Phone 属性修改前的值为:"+ element.elementText(attribute)+ "\n请输入新值: ");// 7String str3 = sc.next();if (ManageStudentInfo.regex("^[1][358]\\d{9}$",str3)) {element.element("phone").setText(str3);break;} else {System.out.println("请输入 有效的11位电话号码");}} // end while(true) loop phone} else if (attribute.equals("grade")) {while (true) {System.out.println("ID=" + st.getId()+ "学生的 Grade 属性修改前的值为:"+ element.elementText(attribute)+ "\n请输入新值(只能输入'初级'、'中级'、'高级'):");// 5String str3 = sc.next();if (str3.equals("初级") || str3.equals("中级")|| str3.equals("高级")) {element.element("grade").setText(str3);break;} else {System.out.println("输入错误,请重新输入。只能输入'初级'、'中级'、'高级':");}} // end while(true) loop grade} else {System.out.println("id为" + st.getId() + "学生的"+ attribute + "属性修改前的值为:"+ element.elementText(attribute)+ "\n请输入新值:");element.element(attribute).setText(sc.next());}}// end else{//_——————writerXML(url, dom);flag++;}// end if()}// end foreach() loop} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}// end catch (IOException e)if (2 == flag)System.out.println("修改ID=" + st.getId() + "的学生信息成功……");else if (flag == 0)System.out.println("ID=" + st.getId() + "不存在");}// end edit(String url, Student st,String attribute) method/*** * {根据学生ID查询学生 所有信息}* * @param url* @param id* @return* @author: qww*/public static Students queryById(String url, int id) {Document dom;Students stuD = new Students();dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();int flag = 0;for (Element element : list) {if (String.valueOf(id).equals(element.attributeValue("id"))) {flag = 1;stuD.setId(Integer.parseInt(element.attributeValue("id")));stuD.setAge(Integer.parseInt(element.elementText("age")));// 下面是String型的元素stuD.setName(element.elementText("name"));stuD.setSex(element.elementText("sex"));stuD.setAddress(element.elementText("address"));stuD.setGrade(element.elementText("grade"));stuD.setEmail(element.elementText("email"));stuD.setPhone(element.elementText("phone"));stuD.setSchool(element.elementText("school"));// System.out.println("查询到ID=" + id + "的学生信息并返回……");}}// end foreach(Element ) loopif (flag == 0) {System.out.println("没有ID=" + id + "的学生,  请重新输入……");return null;}// end if (flag == 0)return stuD;}// end queryStudentInfoById() method/*** * {查询所有学生信息}* * @param url* @return* @author: qww*/public static List<Students> queryAll(String url) {List<Students> list = null;Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> listErgodic = person.elements();List<Students> listSave = new ArrayList<Students>();for (Element element : listErgodic) {Students stuD = new Students();stuD.setId(Integer.parseInt(element.attributeValue("id")));stuD.setAge(Integer.parseInt(element.elementText("age")));// 下面是String型的元素stuD.setName(element.elementText("name"));stuD.setSex(element.elementText("sex"));stuD.setAddress(element.elementText("address"));stuD.setGrade(element.elementText("grade"));stuD.setEmail(element.elementText("email"));stuD.setPhone(element.elementText("phone"));stuD.setSchool(element.elementText("school"));listSave.add(stuD);}// end foreach() looplist = listSave;return list;}// end queryAllStudentInfo(String url)/*** * {查询ID并返回防止ID重复,返回1则表示ID存在}* * @param url* @param id* @author: qww*/public static int queryId(String url, int id) {int flag = 0;Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();for (Element element : list) {if (String.valueOf(id).equals(element.attributeValue("id"))) {flag = 1;}}// end foreach()return flag;}// end queryId(String url, int id) method/*** * {重载的方法,用于添加学生信息提示}* * @param url* @author: qww*/public static void queryId(String url) {// public static List<int[]> queryId(String url) {int flag = -1;int arrId[] = new int[1];List<int[]> lit = new ArrayList<int[]>();Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();System.out.print("不能添加的ID=");int i = 1, j = 1;for (Element element : list) {if (1 == i) {for (Element e : list) {i++;}// end inner foreach() loop}j++;// 标志XML没有到结尾if (j != i) {System.out.print(element.attributeValue("id") + ", ");} else {System.out.println(element.attributeValue("id"));}}// end foreach()System.out.print("建议添加的ID=");outerFor: for (int n = 1; n < getMaxId(url); n++) {int k = 0;for (Element e : list) {k = Integer.parseInt(e.attributeValue("id"));if (k == n) {flag = 1;continue outerFor;}}// end inner foreach() loopSystem.out.print(n + ", ");}// end for(int n=0;n<getMaxId(url);n++){ loopif (-1 == flag) {System.out.println("建议输入ID= " + (getMaxId(url) + 1));} else {System.out.println((getMaxId(url) + 1) + "及更大值");}// // System.out.println();// // return lit;}// end queryId(String url, int id) method}// end class ManageXMLFile