【发布时间】:2013-11-30 09:40:54
【问题描述】:
我正在尝试执行以下代码:
public class AddressManager
{
private ArrayList<Address>[] array;
private int depth;
public AddressManager(int d, int s, Address a)
{
array = new ArrayList<Address>[d];
}
}
我的代码还有更多内容,但是这么多的代码足以说明我的问题。当然,netbeans 显示了一个与泛型数组有关的编译错误,在“new ArrayList ...”行上,我已经阅读了很多关于此的内容。
网络上到处都有关于编译器无法验证赋值类型的解释,如果你这样做,很多关于这个的问题都在 StackOverflow 上!据说还有一些方法可以解决这个问题,只要你向编译器展示“你知道你在做什么!”。问题是我无法让它工作,我无法理解解释,我真的想要一个数组列表。
有人可以用更简单的语言解释在我的具体情况下我可以做些什么来解决这个错误吗?我尝试了以下这种想法:
private Object[] array;
array = (ArrayList<Address>[]) new Object[d];
但它似乎无法正确转换,即使我看到的一个网站说你可以做这样的事情,或者使用“@SuppressWarnings(“unchecked”)”或其他东西。拜托,我需要的方式比与我的情况不太匹配的示例(例如 This solution)更清晰,它适用于地图,但不适用于 ArrayLists。
像我在 StackOverflow 上的问题的其他答案可能确实很有帮助,但我不太了解它们,或者我不会写这个请求以获得更实际的东西。
【问题讨论】:
-
以下可能会有所帮助:stackoverflow.com/a/20023599/1057429
-
@amdixon 他当然可以做到——只是它不会编译... :)
-
alfasin,对您的建议采取类似的方法,我不介意“ArrayList of ArrayLists”....例如 ArrayList
>....但是,假设我添加使用array.add 将一些项目添加到数组中......维持这一秩序非常重要。这是否是一个不会在我脸上抛出错误的适当解决方案? -
是的,这是首选方法。当然this 也可以,只是不推荐。
标签: java arrays generics arraylist