2012-10-21 112 views
0

我需要一个动态的“数据库”对象,经过一番研究,决定使用ArrayList。但是,我不能修改ArrayList中的代码如下:在ArrayList中修改对象

public static ArrayList cprofiles; 
... 
cprofiles = new ArrayList(); 
... 
... 
Customer newc = new Customer (lna, fna, sinum, year, month, day); 
cprofiles.add (newc); 

在此声明之后,我想打电话给使用以下格式cprofiles.get(0).getName()对象中的方法,但我得到一个错误,说明

找不到符号(指着.getName())

当我尝试编译程序。我花了大约一个小时研究在ArrayList中修改这个方法的正确方法,但是我发现的源代码似乎表明我所做的确实是正确的。 请帮助我发现我的错误以及我如何修复它。

谢谢!

+2

这也可能是'cprofiles.get(0)'需要被铸造(或列表是'新的ArrayList ()' )。 –

+1

或公共静态ArrayList cprofiles – chrome

回答

6

你应该使用ArrayList的通用版本,而不是原始版本:

List<Customer> cprofiles = new ArrayList<Customer>(); 

如果只是用ArrayList,编译器不知道你的列表中包含,所以一切都被认为是一个Object 。你因此需要将返回的对象转换为实际类型:

Customer c = (Customer) list.get(0); 
+0

啊该死的。我怎么错过了。以为他已经用类型参数声明了一个ArrayList。急速使浪费:) – CKing

+0

@你的意思是“*急速*使浪费”? –

+0

再次证明了这一点。 :)。在手机键盘上自动更正有时会很痛苦。 – CKing