主にHashBagクラスにアクセスしたかったので、ApacheCommonsを初めて使用します。問題を特定するために、私が従ったプロセス全体の概要を説明します。
まず、Apache CommonsCollectionsの現在のバージョン(3.2.1)をダウンロードしました。 http://commons.apache.org/collections/download_collections.cgi
次に、ファイルをディスク上のフォルダーに抽出し、commons-collections-3.2.1.jar
そのフォルダーをシステム%CLASSPATH%
環境変数に追加して、クラスをJavaプログラムにインポートできるようにしました。
このテストプログラムは、私が抱えている問題を示しています。
import org.apache.commons.collections.bag.HashBag;
public class test {
public static void main(String[] args) {
HashBag test = new HashBag();
System.out.println(test.getClass().getName());
System.out.println(test.uniqueSet().getClass().getName());
}
}
最初の出力行はorg.apache.commons.collections.bag.HashBag
、どちらが予想されるかを示しています。
2番目の出力行はorg.apache.commons.collections.set.UnmodifiableSet
、どちらが予期されていないかを示しています。こちらのドキュメントによると、uniqueSet()
メソッドはスーパークラスとインターフェイスの両方から継承されますが、どちらの場合も、メソッドはを返すことになっていjava.util.Set
ます。なぜここで何か違うものを返すのですか?
ありがとう!