我第一次出现在这种“奇怪”的情况中。我需要为我的类创建两个不同的构造函数:
public OpponentListAdapter(Context c, ArrayList<MyCustomObject> l){}
和
public OpponentListAdapter(Context c, ArrayList<String> l){}
因为根据ArrayList的泛型类型,我需要执行不同的操作。 但我有这个错误:
方法OpponentListAdapter(Context,ArrayList)具有相同的擦除&gt; OpponentListAdapter(Context,ArrayList)作为OpponentListAdapter类型中的另一种方法
怎么了? 也许解决方案很简单,但就目前而言,我找不到任何好处!
答案 0 :(得分:5)
ArrayList<String>
和ArrayList<MyCustomObject>
都有相同的删除ArrayList
。因此,两个构造函数在运行时都会有相同的签名,因此会出现异常,因为那里有一个重复的构造函数。
如果您希望构造函数采用不同类型的ArrayList
,那么您可以使用无界通配符,如下所示:
public OpponentListAdapter(Context c, ArrayList<?> l) {}
这将适用于两个数组列表,或使您的构造函数通用,给出一个类型参数。
答案 1 :(得分:1)
你有两个具有相同签名的构造函数,constructor1(Context,ArrayList),constructor2(Context,ArrayList),意思是构造函数是相同的。