0

私は、Java の経験が少しあるだけで、Scala の学習を始めたばかりです。Java の の 1 つに対する Scala のデータ型はどうなるのだろうCollection <?> argsか?

4

2 に答える 2

4

まず第一に、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 コレクションの階層を示すこのページを読むことができます。

于 2013-06-15T07:21:13.280 に答える
1
Collection <?> args

コレクション (「未知のコレクション」と発音) と書かれています。つまり、要素の型が何にでも一致するコレクションです。明らかな理由から、これはワイルドカード タイプと呼ばれます。

ワイルドカードについて詳しくはこちら

Scala Existential 型Scala でのワイルドカードの使用について

于 2013-06-15T06:43:08.267 に答える