1

長いクラス名のエイリアスを作成しています...完全に正常に機能しますが、シリアル化されたクラスの1つがプライベート内部クラスです。公開する以外にエイリアスを作成する方法が思いつきません。そもそも公開すべきではないため、このソリューションは好きではありません。ただし、エイリアスを作成すると、XML ファイルを変更せずにパッケージ名とクラス名を変更できるようになります (最初のタグが完全修飾クラス名であるため)。

これは私がエイリアスを作成する方法です:

xstreamInstance.alias("ClassAlias", OuterClass.InnerClassToAlias.class);

そのため、その内部クラスへのパブリック アクセスが必要です。

ですから、プライベートな内部クラスに別名を付けるためのトリックを知っている人がいたら、ぜひ教えてください。

4

2 に答える 2

1

次のようなクラスを作成し、xstreamInstanceへの参照をaliasメソッドに渡すことができます。

public class Parent {
    public void alias(XStream x) {
        x.alias("Kiddie", Parent.Child.class);
    }

    private class Child {

    }
}
于 2010-02-04T03:57:31.750 に答える
0

エイリアスにアノテーションを使用するのはどうですか?

public class Parent {
    @XStreamAlias("kiddie")
    private class Child {

    }
}

編集: 残念ながら、ネストされたクラスの注釈の解析は、親クラスの解析を要求する場合、XStream ではサポートされていません。

于 2010-02-23T23:08:43.443 に答える