私はこのような何かを持っています同じ理由でGenericとしてint
Javaのジェネリックのリターンはint []の代わりに整数[]
でも、int[]
を返すようにジェネリックを変更する簡単な方法はありますか?
私はこのような何かを持っています同じ理由でGenericとしてint
Javaのジェネリックのリターンはint []の代わりに整数[]
でも、int[]
を返すようにジェネリックを変更する簡単な方法はありますか?
いいえ、あなたがすることはできませんが、あなたはあなただけの配列を扱っている場合
public interface A<AI>{
public AI returnAll();
}
によって
public interface A<I>{
public I[] returnAll();
}
あなたのインターフェイスを交換することができるかもしれません。さもなければ、あなたは運がありません。配列の代わりにList
を使用できる場合は、Guava Ints#asListが役立ちます。
ジェネリックは、ラッパークラスでのみサポートされています。プリミティブ型には使用できません。 Javaで
It allows primitive types but it uses autoboxing for the same.
ジェネリックは完全にコンパイル時を構築している - コンパイラは正しい型にキャストにすべての一般的な用途をオンにします。
GenericsはWrapperクラスでのみサポートされていますか? :ジェネリックスとして使用するものはすべてObjectに変換可能である必要があり、プリミティブ型はObjectに変換できません。それがジェネリックでサポートされていない理由です。
EDIT:Javaの10で
が、そこにプリミティブをサポートするためのジェネリック医薬品のための提案ですが、今は利用できません。 (コメントはPeterLawreyから提供された情報)
Java 10では、プリミティブをサポートするジェネリックの提案がありますが、現在は利用できません。 –
@PeterLawrey true !!情報を追加していただきありがとうございます。私はメインの質問本体に追加します –
int[]
はInteger[]
ではありません。唯一の方法はI
を返し、B
クラスにはA<int[]>
を使用することです。あなたは今(みましょう希望)のためにジェネリック型、などのプリミティブ型を使用することはできませんので、
public interface A<I>{
public I returnAll();
}
public class B implements A<int[]>{
public int[] returnAll(){
return new int[]{};
}
}
あなたはA<int>
を使用することはできません。
もちろん、私は配列のみを使用していません:/それはリストです。 – JeD