具有不同ArrayList类型作为参数的构造方法

时间:2014-02-04 15:47:06

标签: java android generics arraylist

我第一次出现在这种“奇怪”的情况中。我需要为我的类创建两个不同的构造函数:

public OpponentListAdapter(Context c, ArrayList<MyCustomObject> l){}

public OpponentListAdapter(Context c, ArrayList<String> l){}

因为根据ArrayList的泛型类型,我需要执行不同的操作。 但我有这个错误:

  

方法OpponentListAdapter(Context,ArrayList)具有相同的擦除&gt; OpponentListAdapter(Context,ArrayList)作为OpponentListAdapter类型中的另一种方法

怎么了? 也许解决方案很简单,但就目前而言,我找不到任何好处!

2 个答案:

答案 0 :(得分:5)

ArrayList<String>ArrayList<MyCustomObject>都有相同的删除ArrayList。因此,两个构造函数在运行时都会有相同的签名,因此会出现异常,因为那里有一个重复的构造函数。

如果您希望构造函数采用不同类型的ArrayList,那么您可以使用无界通配符,如下所示:

public OpponentListAdapter(Context c, ArrayList<?> l) {}

这将适用于两个数组列表,或使您的构造函数通用,给出一个类型参数。

答案 1 :(得分:1)

你有两个具有相同签名的构造函数,constructor1(Context,ArrayList),constructor2(Context,ArrayList),意思是构造函数是相同的。