2016-03-28 10 views

答えて

3

いいえ、あなたがすることはできませんが、あなたはあなただけの配列を扱っている場合

public interface A<AI>{ 
    public AI returnAll(); 
} 

によって

public interface A<I>{ 
    public I[] returnAll(); 
} 

あなたのインターフェイスを交換することができるかもしれません。さもなければ、あなたは運がありません。配列の代わりにListを使用できる場合は、Guava Ints#asListが役立ちます。

+0

もちろん、私は配列のみを使用していません:/それはリストです。 – JeD

6

ジェネリックは、ラッパークラスでのみサポートされています。プリミティブ型には使用できません。 Javaで

It allows primitive types but it uses autoboxing for the same.

ジェネリックは完全にコンパイル時を構築している - コンパイラは正しい型にキャストにすべての一般的な用途をオンにします。

GenericsはWrapperクラスでのみサポートされていますか? :ジェネリックスとして使用するものはすべてObjectに変換可能である必要があり、プリミティブ型はObjectに変換できません。それがジェネリックでサポートされていない理由です。

EDIT:Javaの10で

が、そこにプリミティブをサポートするためのジェネリック医薬品のための提案ですが、今は利用できません。 (コメントはPeterLawreyから提供された情報)

+2

Java 10では、プリミティブをサポートするジェネリックの提案がありますが、現在は利用できません。 –

+1

@PeterLawrey true !!情報を追加していただきありがとうございます。私はメインの質問本体に追加します –

1

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>を使用することはできません。

関連する問題