そのため、Java の任意の型で機能するパラメータ化された型を作成しようとしています。これには、オブジェクトであるすべてのものと、プリミティブ型も含まれます。どうすればこれを行うことができますか?
わかりました、for-each のターゲットをプリミティブにしたいとします。
for(int i : MyClass)
そんな感じ。これは可能ですか?
そのため、Java の任意の型で機能するパラメータ化された型を作成しようとしています。これには、オブジェクトであるすべてのものと、プリミティブ型も含まれます。どうすればこれを行うことができますか?
わかりました、for-each のターゲットをプリミティブにしたいとします。
for(int i : MyClass)
そんな感じ。これは可能ですか?
Bozhoの回答に対するコメントから、おそらく次のようなものが必要になるでしょう:
interface MyInterface<T> extends Iterable<T> {
}
いいえ、プリミティブ型に対してはできません。プリミティブ型の反復子をシミュレートすることはできますが、for-each ループで使用できるように、実際に Iterable になることはありません。
何かが足りないかもしれませんが、実装してみませんIterable<T>
か?
public MyClass<E>
プリミティブ型は含まれません。つまり、 を宣言することはできませんがMyClass<int> myobj;
、ラッパー (java.lang.Integer
など)を使用できます。
プリミティブ型では、このようなことはできません。「運が良ければ」悪意のあるオートボクシングが発生し、運が悪ければコンパイラから抗議を受ける可能性があります。GNU Trove または Apache Commons Primitives を見ると、プリミティブ型でコレクション フレームワークと同等の処理を実行したいという欲求から生じるパラレル ユニバースが表示されます。
オートボクシングのオーバーヘッドが許容できると確信しているなら、それは理にかなっているかもしれませんが、私はそれが不快であると感じる傾向を克服することはできません.
これはうまくいくはずですが、それはあなたが本当に求めているものではないと思います...
final List< Integer> list;
...
for(final int i : list)
{
}