2

GWT RPC のメソッドはList のようなインターフェイスではなく、ArrayList のような具体的なクラスを返すべきであるという事実に関して、すでにいくつかの質問があります。たとえば、GWT では、メソッドがインターフェイスを返すべきではないのはなぜですか?を参照してください。

これが私の質問です:これは戻り値の型自体に限定されていますか? メソッドのパラメータはどうですか?そして、戻りオブジェクトにインターフェースが含まれている場合はどうなりますか。

public class MyReturnObject implements IsSerializable {
   List<String> listOfUnspecifiedType1;
   List<Long> listOfUnspecifiedType2;
   ...
}

私が見た例はすべて、戻り値の型自体について語っています。インターフェイスを返すのが問題になる理由がわかりませんが、インターフェイスをラップするだけのオブジェクトを返すのは問題ではありません。しかし、多分私は何かが欠けていますか?

4

1 に答える 1

3

リンクされた質問から、それが再帰的に適用されることは明らかです (そして、できるだけ多くの派生型を使用する必要がある理由を理解するとすぐに、それが再帰的であることが明らかになります)。

これは、戻り値の型とそのフィールドだけでなく、メソッドの引数にも当てはまりList<X>ます。ListArrayListLinkedList

もちろん、インターフェイスだけでなく、クラスにも同じことが当てはまります:AbstractListは と違いはありませんList

また、最適化の前に生成が行われるため、コードで使用するクラスだけでなく、ソース パスから可能なすべてのクラスが含まれます。これらのクラスはすべてアプリで使用されるようになったため、最適化パスの邪魔になります

したがって、ルールは次のとおりです。可能な限り最も具体的なタイプを使用してください。必然的に、DTO を恐れず、ビジネス/ドメイン オブジェクトを送信しようとしないでください

于 2013-01-15T09:42:42.560 に答える