java - 将数组列表中包含的对象的参数传递给方法

标签 java loops arraylist parameter-passing

标题可能有点令人困惑或误导,但我正在尝试比较单个字符串:

String mystring = "abc";

然后尝试将其与数组列表中包含的每个字符串进行比较

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<String> array我上面提到的是每个对象的属性,所以我不能直接迭代我想要的数组列表(也许我可以,但我只是不知道如何)。有没有办法接收数组列表内对象的属性作为参数或在不同类的方法中迭代它?

最佳答案

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

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

实例化 ArrayList只能容纳 MyClass 类型的对象.

你提到了

the ArrayList array that i mentioned above is a property of each these objects

我认为这意味着 Object ArrayList<Object> 中包含的内容叫objects您传递到您的Search方法是特定类的实例(继续前面的示例 MyClass )。该类包含 ArrayList<String>您想要将其作为实例数据进行迭代。问题是你没有告诉 Java ArrayList<Object>保存 MyClass 的实例,所以当你从对象中获取某些东西时,Java 不知道它的类型是 MyClass 。 (具体来说,编译器不知道这一点。)

如果你想访问一个对象的实例数据,那么你必须告诉Java你正在从什么类型的东西访问该数据。 Java 编译器非常关注对象的类型以及每个对象上定义的操作。如果您尝试从 MyClass 的实例访问实例数据,但编译器认为该实例的类型为 Object ,那么编译器会对你感到非常不安(因为它不知道所讨论的实例是否确实拥有你试图访问的数据——它可能是其他类型的对象!)。你需要做的是告诉编译器你只能存储 MyClass 的实例。在你的ArrayList ,这样编译器就会知道 ArrayList 中的对象拥有您想要访问的实例数据。

关于java - 将数组列表中包含的对象的参数传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23351445/

相关文章:

java - 如何使@RolesAllowed注释对我的Web应用程序有效?

java - 执行附加逻辑的 getter 和 setter

java - 如何在 RoboVM 中检查手机是否正在充电?

java - 从 Oracle 存储过程中检索数组列表 - Java

vb.net - Vb Net检查arrayList是否包含子字符串

java.lang.ClassCastException : android. widget.RelativeLayout 无法转换为 android.widget.EditText

javascript - 在所有对象嵌套中寻找某个键

excel - VBA Excel 2007 : Need to loop copy and loop count number except zero every row above

JavaScript 数学/循环动态创建行和列

java - ArrayList 字符串循环弄乱了字符串