将arraylist中包含的对象的参数传递给方法

时间:2014-04-28 21:24:49

标签: java loops arraylist parameter-passing

标题可能有点令人困惑或误导,但我想比较一个字符串:

String mystring = "abc";

然后尝试将它与arraylist中包含的每个字符串进行比较

ArrayList<String> array = new ArrayList<String>();
array.add("The first letters of the alphabet are abc");
array.add("abc");
array.add("Alphabet");
array.add("Nothing");

我找到了一个课程,唯一重要的是“搜索”方法。

public void Search(ArrayList<Object> objects)

如果您没有注意到,此方法接收对象的arraylist作为参数。现在问题是我上面提到的ArrayList<String> array是每个这些对象的属性,所以我不能直接遍历我想要的arraylist(也许我可以,但我只是不知道如何)。有没有办法在arraylist中接收对象的属性作为参数,或者在不同的类方法中迭代它?

2 个答案:

答案 0 :(得分:1)

您的问题似乎与Java泛型有关。这里使用泛型与ArrayList一起告诉Java你要在ArrayList中存储什么类型的对象。如果你想创建一个存储特定种类对象的ArrayList,比如你在其他地方定义的类MyClass的实例,那么你可以做

ArrayList<MyClass> myObjs = new ArrayList<MyClass>();

实例化只能包含ArrayList类型对象的MyClass

你提到

  

我上面提到的ArrayList数组是每个这些对象的属性

我认为您传递到Object方法的ArrayList<Object> objects中包含的Search是特定类的实例(继续来自早期的例子MyClass)。该类包含您要作为实例数据迭代的ArrayList<String>。问题是你没有告诉Java ArrayList<Object>拥有MyClass的实例,所以当你从对象中获得某些东西时,Java不知道它是MyClass类型的。 (具体来说,编译器不知道。)

如果你想访问一个对象的实例数据,那么你将不得不告诉Java你从那里访问那些数据的东西。 Java编译器非常关注对象是什么类型,以及在每个对象上定义了哪些操作。如果您尝试从MyClass的实例访问实例数据,但编译器认为该实例的类型为Object,那么编译器将对您非常不满(因为它不知道是否有问题的实例实际上有你试图访问的数据 - 它可能是其他类型的对象!)。您需要做的是告诉编译器您只能在MyClass中存储ArrayList的实例,以便编译器知道ArrayList中的对象具有您想要的实例数据访问。

答案 1 :(得分:0)

我相信您可以在Search方法中创建 Check if an object belongs to a class in Java 。然后你要做的就是将对象强制转换回String对象并完成该方法所需的其他东西。