我正在尝试使用枚举作为类型参数在 Java 中实现参数化类。一切正常,除了,如果你看下面的代码,有一个Car.Creator
带有参数的匿名类K
。但当然,K
应该有,而不是CarObject<T>
,但这并不容易。如果我放在CarObject<T>
' K
s 的位置,那么我会遇到语法错误。有人可以解释一下这样的事情是否可行,并可能提供一些代码示例。
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
,因为我认为它可能只是一个语法糖:)。