欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【Java】自定义能储存和装载不同(class)数据类型的ArrayList

程序员文章站 2022-12-20 20:35:17
一.问题简介在Java当中,我们有时会遇到将不同class放到一个arraylist当中进行调用的情况,笔者在网上搜了一圈发现就没有一篇博文讲解如何实现这个功能的,因此写了这篇文章。最开始我遇到这个问题是因为之前笔者在编写吃豆人游戏的时候,发现打印吃豆人游戏的地图,如果能够使用一个arraylist来储存不同的类别class的对象,那么就会显得更加方便了。笔者尝试了使用自定义的Person和Animal类放到一个已经申明为Object类型的ArrayList当中,但是笔者发现,如果这样使用的话,我们无法...

一.问题简介

在Java当中,我们有时会遇到将不同class放到一个arraylist当中进行调用的情况,笔者在网上搜了一圈发现就没有一篇博文讲解如何实现这个功能的,因此写了这篇文章。最开始我遇到这个问题是因为之前笔者在编写吃豆人游戏的时候,发现打印吃豆人游戏的地图,如果能够使用一个arraylist来储存不同的类别class的对象,那么就会显得更加方便了。笔者尝试了使用自定义的Person和Animal类放到一个已经申明为Object类型的ArrayList当中,但是笔者发现,如果这样使用的话,我们无法通过遍历ArrayList来获得Person类和Animal类别的属性和方法,相当于整个ArrayList就白写了,因为即使能够将这些类实例化后的对象储存进去,但也无法对其进行实际上的使用。而用这个具备Object类型的ArrayList储存非自定义的类别的对象,比如String、Interger的话则没有问题。

所以这里我尝试了一种全新的,直接通过改写Object类的方法来实现这个功能:

二.代码实现

我们先自定义Person类和Animal类,让它们都继承Object类,因为之后我需要改写Object类的方法,让其具有say()方法。开始实验,这个类实例化后的对象用于之后保存在ArrayList当中:

Person.java:

public class Person extends Object{
    //测试这是否可以作为object类继续保存
    public int x;
    public int y;

    public Person(int x,int y)
    {
        this.x=x;
        this.y=y;
    }
  public void say()
  {
      System.out.println("the x is "+x);
      System.out.println("ths y is "+y);
  }

}

然后是Animal.java

public class Animal extends Object{
    public int x;
    public int y;


    public Animal(int x,int y)
    {
        this.x=x;
        this.y=y;

    }
    public void say()
    {
        System.out.println("the x is "+x);
        System.out.println("ths y is "+y);
    }
}

改写Object类,将其添加say()方法,不然将Person和Animal添加进入ArrayList当中无法调用say()方法,你在Person和Animal当中写了什么方法,就需要正在object当中进行补充,因为这两个类都继承自Object:

public class Object {
public void say()
{
}
}

自己手动编写一个ArrayList:

public class Arraylist{
    private Object[] elements=new Object[1000];
    private int size;

    public void add(Object item) {
        elements[size++]=item;
    }

    public Object get(int index) {
        return elements[index];
    }

    public int size()
    {
        return this.size;
    }

}

在另外的文件test.java内调用他们,进行测试:

public class test {
    public static void main(String[] args) {

    Arraylist a=new Arraylist();
    a.add(new Person(1,2));
    a.get(0).say();
    a.add(new Animal(2,1));
    a.get(1).say();
    System.out.println();
    System.out.println("大小为"+a.size());


    }
}

输出:

the x is 1
ths y is 2
the x is 2
ths y is 1

大小为2

自定义ArrayList成功。

本文地址:https://blog.csdn.net/Geeksongs/article/details/109642434