首页编程TESTNAME(Java TestName类使用实例)

TESTNAME(Java TestName类使用实例)

编程之家2024-02-1784次浏览

一、用Java怎么把String类型的字符串转化为XML格式输出

JXmlSerializable是一个利用java反射,通过调用对象中所有以get(不区分大小写)开头的方法除去getClass方法,生成xml格式,希望与大家分享一下

TESTNAME(Java TestName类使用实例)

下面是一个parent对象,包含两个child对象生成的xml如下

Child类

1package xmlTest;

2

3import java.io.FileNotFoundException;

4import java.io.IOException;

TESTNAME(Java TestName类使用实例)

5import java.io.PrintWriter;

6import java.lang.reflect.InvocationTargetException;

7public class Child extends JXmlSerializable{

8

9 private String _name;

10 private String _sex;

TESTNAME(Java TestName类使用实例)

11 private int age;

12

13 public void setAge(int num){

14 age= num;

15}

16

17 public int getAge(){

18 return age;

19}

20

21 public void setName(String name){

22 _name= name;

23}

24

25 public void setSex(String sex){

26 _sex= sex;

27}

28

29 public String getName(){

30 return _name;

31}

32

33 public String getSex(){

34 return _sex;

35}

36

37}

38

Parent类 1package xmlTest;

2

3import java.io.PrintWriter;

4import java.lang.reflect.Array;

5import java.util.*;

6

7public class Parent extends JXmlSerializable{

8

9 private String _name;

10 private String _sex;

11 private LinkedList list= new LinkedList();

12 private Vector vec= new Vector();

13 int age;

14

15 public void setAge(int num){

16 age= num;

17}

18

19 public int getAge(){

20 return age;

21}

22

23 public void setName(String name){

24 _name= name;

25}

26

27 public void setSex(String sex){

28 _sex= sex;

29}

30

31 public String getName(){

32 return _name;

33}

34

35 public String getSex(){

36 return _sex;

37}

38

39 public void addChild(Child child){

40 list.add(child);

41 vec.add(child);

42}

43

44 public Child[] getChild(){

45

46 Child[] aa= new Child[vec.size()];

47// list.toArray(aa);

48 vec.toArray(aa);

49 return aa;

50}

51

52 public static void main(String[] args){

53// TODO Auto-generated method stub

54 try{

55 Parent pat= new Parent();

56 pat.setName("jack");

57 pat.setSex("male");

58 Child child1= new Child();

59 child1.setName("tom");

60 child1.setSex("male");

61 pat.addChild(child1);

62 Child child2= new Child();

63 child2.setName("Marie");

64 child2.setSex("female");

65 pat.addChild(child2);

66 pat.getChild();

67 PrintWriter out= new PrintWriter("abc.xml");

68 pat.toXmlSerial(out,0);

69 out.flush();

70

71} catch(Exception e){

72 e.printStackTrace();

73}

74

75}

76}

类 JXmlSerializable

1package xmlTest;

2

3import java.lang.reflect.Method;

4import java.lang.reflect.InvocationTargetException;

5import java.lang.reflect.Array;

6import java.io.PrintWriter;

7import java.io.IOException;

8public class JXmlSerializable{

9

10 public void toXmlSerial(PrintWriter out, int num)

11 throws InvocationTargetException, IllegalAccessException,

12 IOException{

13 out.write("<?xml version="1.0"?>");

14 String head="";

15 for(int i= 0; i< num; i++){

16 head+="";

17}

18 out.write(head+"<"+ this.getClass().getName()+">");

19 Method[] methods= this.getClass().getMethods();

20 for(int i= 0; i< methods.length; i++){

21 Class[] paras= methods[i].getParameterTypes();

22 String name= methods[i].getName();

23 if(paras== null|| paras.length== 0){

24 if((name.substring(0, 3).toLowerCase().equals("get"))

25&&!name.equals("getClass")){

26 Object obj= methods[i].invoke(this, null);

27 getMethodXmlSerial(out, obj, methods[i], num);

28}

29}

30}

31

32 out.write(head+"</"+ this.getClass().getName()+">");

33

34}

35

36 private void getMethodXmlSerial(PrintWriter out, Object obj, Method method,

37 int num) throws InvocationTargetException, IllegalAccessException,

38 IOException{

39 if(obj== null)

40 return;

41 String head="";

42 for(int i= 0; i<= num; i++){

43 head+="";

44}

45 if(obj.getClass().isArray()){

46 for(int i= 0; i< Array.getLength(obj); i++){

47 Object childobj= Array.get(obj, i);

48 if(childobj instanceof JXmlSerializable){

49((JXmlSerializable) childobj).toXmlSerial(out, num+ 1);

50} else{

51 getMethodXmlSerial(out, childobj, method, num);

52}

53}

54} else{

55 out.write(head+"<"+ method.getName().substring(3)+">");

56 out.write(obj.toString());

57 out.write("</"+ method.getName().substring(3)+">");

58}

59

60}

61}

编译出来还可以,能够达到我的理想。

编译结果是

1<?xml version="1.0"?>

2<xmlTest.Parent>

3<Name> jack</Name>

4<Age> 0</Age>

5<Sex> male</Sex>

6<?xml version="1.0"?>

7<xmlTest.Child>

8<Name> tom</Name>

9<Age> 0</Age>

10<Sex> male</Sex>

11</xmlTest.Child>

12<?xml version="1.0"?>

13<xmlTest.Child>

14<Name> Marie</Name>

15<Age> 0</Age>

16<Sex> female</Sex>

17</xmlTest.Child>

18</xmlTest.Parent>

今天看了看java.beans包,发现了两个好东西,XMLEncoder和XMLDecoder。发现自己以前把从XML存取对象真是太费力气啦。做了小工具类,以后可以用用了。

1以下是引用片段:

2package com.imct.util;

3import java.beans.XMLDecoder;

4import java.beans.XMLEncoder;

5import java.io.File;

6import java.io.FileInputStream;

7import java.io.FileNotFoundException;

8import java.io.FileOutputStream;

9import java.io.IOException;

10import java.util.ArrayList;

11import java.util.List;

12/***//**

13*<title>使用XML文件存取可序列化的对象的类</title>

14*<description>提供保存和读取的方法</description>

15*@author殷晋

16*<copyright>清华大学汽车工程开发研究院@2005</copyright>

17*@version 1.0

18* 2005-8-5 16:44:49

19*/

20public class ObjectToXMLUtil

21{

22/***//**

23*把java的可序列化的对象(实现Serializable接口)序列化保存到XML文件里面,如果想一次保存多个可序列化对象请用集合进行封装

24*保存时将会用现在的对象原来的XML文件内容

25*@param obj要序列化的可序列化的对象

26*@param fileName带完全的保存路径的文件名

27*@throws FileNotFoundException指定位置的文件不存在

28*@throws IOException输出时发生异常

29*@throws Exception其他运行时异常

30*/

31 public static void objectXmlEncoder(Object obj,String fileName)

32 throws FileNotFoundException,IOException,Exception

33{

34//创建输出文件

35 File fo= new File(fileName);

36//文件不存在,就创建该文件

37 if(!fo.exists())

38{

39//先创建文件的目录

40 String path= fileName.substring(0,fileName.lastIndexOf('.'));

41 File pFile= new File(path);

42 pFile.mkdirs();

43}

44//创建文件输出流

45 FileOutputStream fos= new FileOutputStream(fo);

46//创建XML文件对象输出类实例

47 XMLEncoder encoder= new XMLEncoder(fos);

48//对象序列化输出到XML文件

49 encoder.writeObject(obj);

50 encoder.flush();

51//关闭序列化工具

52 encoder.close();

53//关闭输出流

54 fos.close();

55}

56/***//**

57*读取由objSource指定的XML文件中的序列化保存的对象,返回的结果经过了List封装

58*@param objSource带全部文件路径的文件全名

59*@return由XML文件里面保存的对象构成的List列表(可能是一个或者多个的序列化保存的对象)

60*@throws FileNotFoundException指定的对象读取资源不存在

61*@throws IOException读取发生错误

62*@throws Exception其他运行时异常发生

63*/

64 public static List objectXmlDecoder(String objSource)

65 throws FileNotFoundException,IOException,Exception

66{

67 List objList= new ArrayList();

68 File fin= new File(objSource);

69 FileInputStream fis= new FileInputStream(fin);

70 XMLDecoder decoder= new XMLDecoder(fis);

71 Object obj= null;

72 try

73{

74 while((obj= decoder.readObject())!= null)

75{

76 objList.add(obj);

77}

78}

79 catch(Exception e)

80{

81// TODO Auto-generated catch block

82}

83 fis.close();

84 decoder.close();

85 return objList;

86}

87}

88

89

90当然用Beans.instantiate也可以从文件中反序列化初对象

二、java中的user.test(name)语句报错

Java中的usertestname语句报错的原因可能是由于以下几个可能的问题:

1.拼写错误:请检查usertestname是否正确拼写,确保与代码中的变量名或方法名完全匹配。

2.变量未声明或未初始化:如果usertestname是一个变量,确保在使用之前已经声明并且初始化,即给变量赋予一个初始值。

3.方法未定义:如果usertestname是一个方法名,确保该方法已经在代码中定义,包括正确的方法名称和参数列表。

4.作用域问题:如果usertestname是一个局部变量或方法,在使用之前确保在相应的作用域内进行声明和定义。

拓展内容:

在Java中,变量和方法的命名是非常重要的,良好的命名可以提高代码的可读性和可维护性。建议遵循以下命名规范:

1.使用有意义的名称:变量名或方法名应该能够清晰地表达其用途和含义,以便其他开发人员能够轻松理解代码的意图。

2.遵循驼峰命名法:对于变量名和方法名,使用小写字母开头,并在每个单词的首字母大写,例如:userTestName。

3.避免使用保留关键字:确保变量名或方法名不与Java的保留关键字冲突,否则会导致编译错误。

4.使用一致的命名风格:保持命名风格的一致性,例如,如果使用驼峰命名法,则在整个代码中都应该遵循该风格。

总之,当出现代码报错时,需要仔细检查错误信息,确定出错的位置,并根据具体的错误原因进行相应的调整和修复。

三、在java中 什么叫 实例方法

实例方法也叫做对象方法。

类方法是属于整个类的,而实例方法是属于类的某个对象的。

由于类方法是属于整个类的,并不属于类的哪个对象,所以类方法的方法体中不能有与类的对象有关的内容。即类方法体有如下限制:

(1)类方法中不能引用对象变量;

(2)类方法中不能调用类的对象方法;

(3)在类方法中不能使用super、this关键字。

(4)类方法不能被覆盖。

如果违反这些限制,就会导致程序编译错误。

与类方法相比,对象方法几乎没有什么限制:

(1)对象方法中可以引用对象变量,也可以引用类变量;

(2)对象方法中可以调用类方法;

(3)对象方法中可以使用super、this关键字。

在程序设计中,一些通用的、公用型的方法与类的对象无关,因此常常被作为类方法实现。如Java类库中Math类,其中多数的数学运算操作都被定义成静态方法。因此,可以使用类方法把一些通用的、公用型的方法放在合适的类中,从而很好地将它们组织起来。应用程序中的主方法main就是类方法。

例如:

class Clerk{

int c_ClerkNo;//职员号

String c_ClerkName;//职员姓名

double c_ClerkSalary;//工资

static int c_NextClerkNo=1000;//下一个职员号

static double c_LowSalary=280;//例4-11

public Clerk(String name,double salary){

c_ClerkNo=++c_NextClerkNo;

// c_ClerkNo=c_NextClerkNo++;

c_ClerkName=new String(name);

// c_ClerkName=name;

c_ClerkSalary=salary;

}

}

public class InstanceClerk

{

public static void main(String[] args)

{

Clerk objclerk1=new Clerk("张三",892.5);

Clerk objclerk2=new Clerk("李四",1025.8);

String aName=new String("王五");

Clerk objclerk3=new Clerk(aName,2000);

System.out.println("姓名:"+objclerk1.c_ClerkName+"编号:"+objclerk1.c_ClerkNo+"工资:"+objclerk1.c_ClerkSalary);

System.out.println("姓名:"+objclerk2.c_ClerkName+"编号:"+objclerk2.c_ClerkNo+"工资:"+objclerk2.c_ClerkSalary);

System.out.println("姓名:"+objclerk3.c_ClerkName+"编号:"+objclerk3.c_ClerkNo+"工资:"+objclerk3.c_ClerkSalary);

System.out.println("最低工资:职员1="+objclerk1.c_LowSalary);

System.out.println("最低工资:职员2="+objclerk2.c_LowSalary);

Clerk.c_LowSalary=330;

System.out.println("提高以后");

System.out.println("最低工资:职员1="+objclerk1.c_LowSalary);

System.out.println("最低工资:职员2="+objclerk2.c_LowSalary);

}

}

你可以参考这个源程序,然后自己将注释的语句去掉注释等等,运行一下就会明白的。

希望对你有所帮助。

usb-serial controller驱动(usb-serial controller驱动)速录机(亚伟中文速录机软件怎么速)