0

そのため、Java の任意の型で機能するパラメータ化された型を作成しようとしています。これには、オブジェクトであるすべてのものと、プリミティブ型も含まれます。どうすればこれを行うことができますか?

わかりました、for-each のターゲットをプリミティブにしたいとします。

for(int i : MyClass)

そんな感じ。これは可能ですか?

4

5 に答える 5

4

Bozhoの回答に対するコメントから、おそらく次のようなものが必要になるでしょう:

interface MyInterface<T> extends Iterable<T> {
}

いいえ、プリミティブ型に対してはできません。プリミティブ型の反復子をシミュレートすることはできますが、for-each ループで使用できるように、実際に Iterable になることはありません。

于 2009-12-05T21:51:55.473 に答える
2

何かが足りないかもしれませんが、実装してみませんIterable<T>か?

于 2009-12-05T21:52:52.683 に答える
1
public MyClass<E>

プリミティブ型は含まれません。つまり、 を宣言することはできませんがMyClass<int> myobj;、ラッパー (java.lang.Integerなど)を使用できます。

于 2009-12-05T21:40:46.900 に答える
1

プリミティブ型では、このようなことはできません。「運が良ければ」悪意のあるオートボクシングが発生し、運が悪ければコンパイラから抗議を受ける可能性があります。GNU Trove または Apache Commons Primitives を見ると、プリミティブ型でコレクション フレームワークと同等の処理を実行したいという欲求から生じるパラレル ユニバースが表示されます。

オートボクシングのオーバーヘッドが許容できると確信しているなら、それは理にかなっているかもしれませんが、私はそれが不快であると感じる傾向を克服することはできません.

于 2009-12-05T21:57:20.140 に答える
0

これはうまくいくはずですが、それはあなたが本当に求めているものではないと思います...

final List< Integer> list;

...

for(final int i : list)
{
}
于 2009-12-05T23:39:11.650 に答える