0

次のxmlとクラスがあるシナリオがあります

XML :

<packages>
<package>
<name>class1</name>
      <classes>300</classes>
      <functions>21</functions>
      <ncss>283</ncss>
      <javadocs>20</javadocs>
      <javadoc_lines>111</javadoc_lines>
      <single_comment_lines>11</single_comment_lines>
      <multi_comment_lines>221</multi_comment_lines>
</package>
</packages>

Java クラス :

Class Package {

//all variables and setters getters
}

class Packages {
public  ArrayList<Package> x;
//add and remove methods for x
}

mainClass には次のものがあります。

    BufferedReader br = new BufferedReader(new FileReader(new                                                    
File("C:\\old_code_complexity.xml")));
    String line;
    StringBuilder sb = new StringBuilder();

    while((line=br.readLine())!= null){
        sb.append(line.trim());
    }

    String x = sb.toString();

    XStream xstream = new XStream();
    xstream.alias("package", Package.class);
    xstream.alias("packages", Packages.class);
    xstream.addImplicitCollection(Packages.class, "x");



    Packages pList = (Packages)xstream.fromXML(x);
    Package pack = (Package) xstream.fromXML(x);

    System.out.println(xstream.toXML(pack));

println の前の行で毎回エラーが発生する

Exception in thread "main" java.lang.ClassCastException: dummyCompare.input.Packages     cannot be cast to dummyCompare.input.Package
    at dummyCompare.Logic.mainClass.main(mainClass.java:41)

コードで操作できるオブジェクトの配列を取得できるようにするには、このキャスト操作をどのように管理すればよいでしょうか?

4

1 に答える 1

0

PackagesオブジェクトをオブジェクトにキャストしようとしているのはなぜPackageですか? のゲッターを作成するだけですPackages

public  ArrayList<Package> getPackageList() {
  return x;
}

そしてそれをキャストする代わりに:

Packages pList = (Packages)xstream.fromXML(x);
ArrayList<Package> pack = pList.getPackageList();
于 2013-04-10T07:36:07.483 に答える