私は、Java の経験が少しあるだけで、Scala の学習を始めたばかりです。Java の の 1 つに対する Scala のデータ型はどうなるのだろうCollection <?> args
か?
2 に答える
まず第一に、Scala コレクションは Java コレクションとは別のライブラリを形成します。もちろん、Scala から Java コレクションを使用することもできますが、これは通常、何らかの Java API と相互運用するコードで行われ、純粋な Scala コードは通常 Scala コレクションを使用します。
あなたの質問に関しては、Scala ではワイルドカードはアンダースコア文字で示されるので、そうです、Java クラスは Scalajava.util.Collection<?>
のようjava.util.Collection[_]
になります。
ところで、型の境界、つまり のようなものが必要なCollection<? extends SomeClass>
場合は、次の構文で実現します。
Collection<? extends SomeClass> -> Collection[_ <: SomeClass]
Comparator<? super SomeClass> -> Comparator[_ >: SomeClass]
ただし、前述したように、純粋な Scala コードでは Java コレクションを使用しない方がよいでしょう。これは、Scala の対応するものよりもはるかに不便だからです。Scala コレクションにはより複雑な階層があり、 JavaCollection
に直接相当するものはありません。Scala コレクションに関するこの優れたチュートリアル、特にScala コレクションの階層を示すこのページを読むことができます。
Collection <?> args
コレクション (「未知のコレクション」と発音) と書かれています。つまり、要素の型が何にでも一致するコレクションです。明らかな理由から、これはワイルドカード タイプと呼ばれます。