型パラメーターとして列挙型を使用して、Java でパラメーター化されたクラスを実装しようとしています。以下のコードを見ると、Car.Creator
parameter を持つ匿名クラスがあることを除いて、すべて正常に動作しますK
。もちろん、 の代わりにK
があるはずですがCarObject<T>
、そう簡単ではありません。の場所に入れるCarObject<T>
と、K
構文エラーが発生します。このようなことが可能かどうかを説明し、コードサンプルを提供してください。
public class CarObject<T extends Enum<T>>
{
public Map<T, String> values;
private Class<T> typeClass;
public CarObject(Class<T> clazz)
{
typeClass = clazz;
values = new EnumMap<T,String>(typeClass);
}
public static final Car.Creator<K> Creator = new Car.Creator<K>()
{
public K create()
{
return new K();
}
public K[] newArray(int size)
{
return new K[size];
}
}
}
Androidの公式ドキュメント(「クラスの概要」のコードを参照) から、これが完全に正常に機能する例を示します。Android の内部では魔法が働いていると思います。私はまったく同じことをしようとしています - Parcelable インターフェイスを実装します。私はこの例をimplements Parcelable
他のものを使わずに作っただけです。