我试图以这样一种方式扩展泛型类,即可以用两种方式构造子类:
DistinguishableItem。ItemDistinguisher作为附加参数。我曾尝试这样做:
public class AdvancedAdapter<T> extends ArrayAdapter<T>{
protected ItemDistinguisher distinguisher = null;
public interface DistinguishableItem{
boolean isDivider();
}
public interface ItemDistinguisher{
boolean isDivider();
}
public AdvancedAdapter(Context context, int itemResource, T[] objects, ItemDistinguisher dist) {
super(context, itemResource, objects);
this.distinguisher = dist;
}
public <T extends DistinguishableItem> AdvancedAdapter(Context context, int itemResource, T[] objects) {
super(context, itemResource, objects);
}
}第二个构造函数出现了一个奇怪的错误,即super(...)方法无法解决。这是我唯一能想到的做这种事的方法。当然,我会尝试将<T extends DistinguishableItem>移到类的声明中,但是如果这样做,第一个构造函数就会失败,因为objects不会扩展所需的接口。
这在java中有可能吗?
发布于 2015-12-05 18:58:45
您的代码混淆了AdvancedAdapter和ArrayAdapter的类T和第二个构造函数中的参数对象类
您可以重写您的方法来查看它:
public <X extends DistinguishableItem> AdvancedAdapter(Context context, int itemResource, X[] objects)而且错误总是一样的,而且更加清楚:
The constructor ArrayAdapter<T>(Context, int, X[]) is undefined因为T和X类之间没有关系
你可以投,但它不安全:
super(context, itemResource, (T[]) objects);您可以测试X是否是T的子类,如果不是,则抛出异常。
https://stackoverflow.com/questions/34108108
复制相似问题