2

どちらかを取ることができるはずの読み取り専用メソッドがあります

1. Map<Date, List<X>>

また

2. Map<Date, List<Y>>

パラメータとして。

ここでは、メソッドを定義するために次の 2 つのオプションがあります。

A. private <T> List<Date> myMethod(Map<Date, List<T>> map)
B. private List<Date> myMethod(Map<Date, List<?>> map)

どちらも私にとってはうまくいきますが、どちらが望ましいですか?

ありがとう。

4

2 に答える 2

5

JLSから

<T> boolean addAll(Collection<T> c)

このバージョンは十分に柔軟ですが、型パラメーターは署名で 1 回しか使用されないことに注意してください。これは、引数の型、戻り値の型、および/またはスロー型の間の相互依存関係を表現するために型パラメーターが使用されていないという事実を反映しています。このような相互依存性がない場合、ジェネリック メソッドは不適切なスタイルと見なされ、ワイルドカードが優先されます。

于 2012-09-13T07:55:11.377 に答える
5

最初のものは、必要な場合に型へのアクセスを提供しますT(たとえば、何かを型にキャストする必要がある場合Tなど)。List後者の場合は、どんな種類の要素が含まれているかは気にしないと言うだけです。

于 2012-09-13T07:43:16.813 に答える