我有一个简单的方法,采用一般的List参数但由于某种原因,我的IDE(Eclipse)说明它是如何解决的?
我在这里做错了什么
private OnClickListener removeFieldListener(final LinearLayout layout,
List<T> viewList) {
return new OnClickListener() {
@Override
public void onClick(View v) {
int indexToDelete = layout.indexOfChild(v);
}
};
}
Run Code Online (Sandbox Code Playgroud)
Rid*_*del 16
在这种情况下,必须在某处定义T参数.因为我猜你的类没有声明这个参数,你必须把它放在你的方法声明中,比如
private <T> OnClickListener removeFieldListener(final LinearLayout layout,
List<T> viewList) {
Run Code Online (Sandbox Code Playgroud)
但这只会将问题转移给这种方法的调用者......
And*_*yle 12
Riduidel是对的,问题在于你没有宣布T
任何地方.
根据您对列表内容的处理方式,您可以使用通配符. List<?> viewList
如果你只是把Object
它拉出来会有用; 或者List<? extends IListener>
允许你从中获取IListeners等.
通常,如果只在方法中出现一次,则不需要通用参数,而应使用通配符.如果它确实出现多次,例如你从列表中删除了东西并将它们分配给类型的变量T
,那么你确实需要通配符,你应该像Riduidel建议的那样参数化你的方法.
归档时间: |
|
查看次数: |
18395 次 |
最近记录: |