遍历不同对象的 ArrayList
Iterating through an ArrayList of different objects
我有一个摘要 class 有几个子class。测试器 class 有一个 ArrayList,其中每个子 class 有 1 个对象。它们每个都有一个同名的方法,我如何遍历 ArrayList 并为每个对象调用该方法?
我的一个子class(其他基本一样):
public class MyMath extends Homework {
private int pagesRead;
private String typeHomework;
public MyMath(int pagesRead, String typeHomework) {
super(pagesRead, typeHomework);
}
public void createAssignment(int p) {
setPagesRead(p);
setTypeHomework(typeHomework);
}
public void toString(int pagesRead, String typeHomework) {
System.out.println("Homework type: " + typeHomework + ". Number of pages read: " + pagesRead + ".");
}
}
在我的测试器中 class 主要方法:
ArrayList homework = new ArrayList();
homework.add(new MyMath(5, "Math"));
homework.add(new MyScience(5, "Science"));
homework.add(new MyEnglish(5, "English"));
homework.add(new MyJava(5, "Java"));
好吧,如果方法在您的摘要中指定 class,并且您已经构建了包含其中所有对象的 ArrayList,您应该能够简单地遍历 ArrayList(for 循环)只需调用 .method()
如果你的 ArrayList 是类型并且你的接口也有方法那么你可以这样调用它们
for(int i = 0; i < list.length();i++)
{
list[i].METHOD_NAME();
}
您可以遍历它包含对象的 arraylist ant,并且可以调用该对象的方法。例如,
ArrayList<AbstractClass1> objs = new ArrayList<AbstractClass1>();
objs.add(); // you have added objects already.
然后
for(int i = 0; i< objs.size() ; i++){
objs.get(i).methodYouDefined();
}
如果您尚未在 class 中介绍泛型,则必须手动进行转换。如果你已经了解了泛型,你应该使用它们!见 lak91 的回答。
public abstract class AbstractTest
{
public abstract void oneTwo( int i, String s );
public static void main(String[] args) {
List list = new ArrayList();
list.add( new One() );
list.add( new Two() );
for( Object test : list ) {
AbstractTest abTest = (AbstractTest) test;
abTest.oneTwo( 0, "test" );
}
}
}
class One extends AbstractTest {
@Override
public void oneTwo( int i, String s )
{
System.out.println("One");
}
}
class Two extends AbstractTest {
@Override
public void oneTwo( int i, String s )
{
System.out.println("Two");
}
}
我有一个摘要 class 有几个子class。测试器 class 有一个 ArrayList,其中每个子 class 有 1 个对象。它们每个都有一个同名的方法,我如何遍历 ArrayList 并为每个对象调用该方法?
我的一个子class(其他基本一样):
public class MyMath extends Homework {
private int pagesRead;
private String typeHomework;
public MyMath(int pagesRead, String typeHomework) {
super(pagesRead, typeHomework);
}
public void createAssignment(int p) {
setPagesRead(p);
setTypeHomework(typeHomework);
}
public void toString(int pagesRead, String typeHomework) {
System.out.println("Homework type: " + typeHomework + ". Number of pages read: " + pagesRead + ".");
}
}
在我的测试器中 class 主要方法:
ArrayList homework = new ArrayList();
homework.add(new MyMath(5, "Math"));
homework.add(new MyScience(5, "Science"));
homework.add(new MyEnglish(5, "English"));
homework.add(new MyJava(5, "Java"));
好吧,如果方法在您的摘要中指定 class,并且您已经构建了包含其中所有对象的 ArrayList,您应该能够简单地遍历 ArrayList(for 循环)只需调用 .method()
如果你的 ArrayList 是类型并且你的接口也有方法那么你可以这样调用它们
for(int i = 0; i < list.length();i++)
{
list[i].METHOD_NAME();
}
您可以遍历它包含对象的 arraylist ant,并且可以调用该对象的方法。例如,
ArrayList<AbstractClass1> objs = new ArrayList<AbstractClass1>();
objs.add(); // you have added objects already.
然后
for(int i = 0; i< objs.size() ; i++){
objs.get(i).methodYouDefined();
}
如果您尚未在 class 中介绍泛型,则必须手动进行转换。如果你已经了解了泛型,你应该使用它们!见 lak91 的回答。
public abstract class AbstractTest
{
public abstract void oneTwo( int i, String s );
public static void main(String[] args) {
List list = new ArrayList();
list.add( new One() );
list.add( new Two() );
for( Object test : list ) {
AbstractTest abTest = (AbstractTest) test;
abTest.oneTwo( 0, "test" );
}
}
}
class One extends AbstractTest {
@Override
public void oneTwo( int i, String s )
{
System.out.println("One");
}
}
class Two extends AbstractTest {
@Override
public void oneTwo( int i, String s )
{
System.out.println("Two");
}
}